这个题目的q运行以后为什么是22 请教高人
#include<stdio.h> void main () { int i=5, j=5, p, q; p=(i++)+...
对于多个++j这样形式的式子,编译器是这样执行的。理论上是先+,再引用,应该得到这样的结果:6+7+8+9+10……,但编译器不知道按什么原理,第一个数要与第二个相同才能得到结果。我是增加++j的个数发现这个规律的。知道这个规律后,只能加以应用了。没道理可讲吧,呵呵。
#include<stdio.h> void main () { int i=5, j=5, p, q; p=(i++)+...
这种蜈蚣题不用理会,因为实际编程中不会出现,而且不同的编译器有不同的结果。
...main() {int i=5,j=5,p,q; p=(i++)+(i++)+(i++); q=(++j)+(++j...
所以最多只能保证执行完以后j=8,而q的值可能由于各编译器优化不同而产生不同结果,我使用gcc4.4.3得到22,你可以试试VC,turbo C,或许有别的结果。使用gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3,把代码编译成汇编可以看得更明白:movl $5, 40(%esp) # 40(%esp)是j在栈中的地址...
#include "stdio.h" void main() { int i,j; for(i=0;i<5;i++) {...
它与break的区别就是break是直接跳出当前循环体了。回头看程序,i=0和1时,j循环至5就会break,然后进入i<2,continue,后面就不再执行;i=2时,j循环至5就break,然后执行printf("%d",j),输出5;然后i=3,j循环至5break,然后进入i>2,break,跳出循环体,执行printf("%d",i),输出3。
#include<stdio.h> void main() { int i=5; printf("%d",(++i)+(++...
而在Unix C下面编译的时候会有warning: #4279-D: the expression depends on order of evaluation (++i)+(++i)+(++i); 结果是8+8+8=24 vs下面应该是先evaluation第一个++i和第二个++i这个时候i=7 7+7=14 然后evaluation第三个++i这个时候i=8 14+8 =22 和unix下的结果完全不一样 ...
#include <stdio.h> void main() { int i, a[5]; int *p=a; for (i...
#include<stdio.h>voidmain(){inti,a[5];int*p=a;for(i=0;i<5;i++,p++){*p=i;printf("%3d",a[i]);}printf("\\n")的计算过程... #include <stdio.h>void main(){ int i, a[5]; int *p=a; for (i=0; i<5; i++,p++ ) { *p=i; printf("%3d", a[i]);} printf("\\n...
#include <stdio.h> void main() { int i=5,k; k=(i++)+(++i)+(++i...
k=(i++)+(++i)+(++i);k=5+7+8 亲答案应该是 20 8 才对
请各位高手指点一下 已知i=5; q=(++i)+(++i)+(++i);输出q=?
这个连接有一个和你的问题一样的问题:http:\/\/zhidao.baidu.com\/question\/122126844.html 参见yyrryyrr2的回答 对于写出(++i)+(++i)+(++i)表达式的C语言书籍作者们,我对你们已经忍无可忍了,这种书应该停止出版。
#include <stdio.h> void main() { char diamond[][5]={{'','','*...
\/*那是因为在单引号里未键入空格,真是的,修改如下*\/ include <stdio.h> int main(void){ char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};int i,j;for (i=0;i<5;i++){ for...
#include<stdio.h> int main() { int i,j;
这个谁给的题啊,计算多了好几个步骤,本来很简单搞这么复杂,大体意思就是i代表外循环,j代表内循环,就是说用a[0]和a[12345678]依次比大小,发现比自己小的就交换位置,然后a[1]再和a[2345678]比,然后a[2]再和a[345678]比,一直比到最后 ...