C 的(++j)+(++j) 为什么和php的结果不一样,j=1 |
|
我可以发表一下自己的看法吗!?c中的答案应该是3 而php中应该是4 编译器的默认不同!我也是新手!回答不好的地方请谅解
|
|
你这最后输出问的是j的值吧
|
|
c 答案是 6, php是5 |
|
这是vs的debug模式下的汇编代码:
int j = 1; mov dword ptr [ebp-8],1 (++j) + (++j); mov eax,dword ptr [ebp-8] add eax,1 mov dword ptr [ebp-8],eax mov ecx,dword ptr [ebp-8] add ecx,1 mov dword ptr [ebp-8],ecx 显然,之后j=3; |
|
5分 |
C中这个表达式是错误的 |
5分 |
考察表达式的值
int i; int j = 1; mov dword ptr [ebp-14h],1 i = (++j) + (++j); mov eax,dword ptr [ebp-14h] add eax,1 mov dword ptr [ebp-14h],eax mov ecx,dword ptr [ebp-14h] add ecx,1 mov dword ptr [ebp-14h],ecx mov edx,dword ptr [ebp-14h] add edx,dword ptr [ebp-14h] mov dword ptr [ebp-8],edx 这之后显然 i=6; |
5分 | |
为什么要和php的一样?php一个脚本语言,能和C++比?
|
|
25分 |
Undefined behavior
实在没有讨论的必要 |
闲来无事可以拿来练练嘴皮子。 |
|
表情贴错了。 |