24小时热门版块排行榜    

查看: 1908  |  回复: 32
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

sunchuanxi

新虫 (初入文坛)

[求助] 关于c语言中++i计算的问题 已有4人参与

请问q的值为多少,我试了下是22,但不理解
#include "stdio.h"
void main()
{
int j=5,q;
q=(++j)+(++j)+(++j);
printf("%d",q);
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

stdlib_h

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
不能说的到21、22 是编译器bug,这个和编译器实现有关,我测试过。
本地iMac,结果 21 (clang)
ideone和cpp.sh、Linux上、FreeBSD以及其他所有gcc版本上结果均为:22
ideone:  http://ideone.com/m1XCZV  
cpp.sh :  http://cpp.sh/5qcsc  

我本地iMac测试结果:
gcc -v
Apple LLVM version 7.3.0 (clang-703.0.29)
add.c:4:5: warning: multiple unsequenced modifications to 'j' [-Wunsequenced]
        q=(++j)+(++j)+(++j);
           ^     ~~
1 warning generated.
21

我在一台FreeBSD服务器上测试结果:
[xxxx@FreeBSD ~/work]$ gcc -v
gcc version 4.2.1 20070831 patched [FreeBSD]
[xxxx@FreeBSD ~/work]$ gcc add.c -o add && ./add
22

一台Linode VPS Debian系统 上测试结果:
xxxx@(none):~/work$ gcc -v
gcc version 4.7.2 (Debian 4.7.2-5)
xxxx@(none):~/work$ gcc add.c -o add && ./add
22

最神奇的Microsoft的VC++ 结果竟然为24 :
下面网站提供 GCC、VC、CLANG 三个主流C编译器结果在线测试:
http://rextester.com/l/c_online_compiler_gcc   
得到的结果GCC: 22 , VC: 24,CLANG: 21
VC(C) 24:      http://rextester.com/FUOOR65113
Clang(c) 21:  http://rextester.com/TVO11176  
GCC(c) 22:    http://rextester.com/OFERJ85936  

当然我本人也认为结果应该为21,所以再碰到这类题目,离开编译器 就是刷流氓,你可以带着上面这个网址,狠狠的扇出题人的脑袋,直到扇的他吐血。

其实这类题目根本毫无意义,谁会在项目里这么写呢?
没有什么问题是递归解决不了的,如果有,那就用循环🔄--OCaml
14楼2016-04-26 11:51:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 33 个回答

wo2cast

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
的确好神奇,我还以为是21呢。
在  q=(++j);                        的时候,输出  6
在  q=(++j)+(++j);                的时候,输出  14  !//这里为啥不是13呢?
在  q=(++j)+(++j)+(++j);       的时候,输出 22  !
'“万事开头难”“之后呢?”“之后你就习惯了”
2楼2016-04-25 22:03:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sunchuanxi

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by wo2cast at 2016-04-25 22:03:45
的确好神奇,我还以为是21呢。
在  q=(++j);                        的时候,输出  6
在  q=(++j)+(++j);                的时候,输出  14  !//这里为啥不是13呢?
在  q=(++j)+(++j)+(++j);       的时候, ...

对呀,不知道怎么算的

发自小木虫Android客户端
3楼2016-04-25 22:17:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

breezefp

新虫 (初入文坛)

应该和编译器有关,我用clang,oc的编译器,是21

发自小木虫Android客户端
4楼2016-04-25 22:28:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见