一道C语言题目,希望高手给个详细的解答

main()
{ int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("\n i=%d,k=%d",i,k);
printf("\n a=%d,b=%d",a,b);
}

我来给你分析分析:采用turbo c
i++的运算规则是先引用再自加,所以6+7+8而i的值变成了9
++k的规则是先自加然后在引用,所以7+8+9而k的值变成了9
所 以最终i=9,k=9
a=21,b=24;
由于不同的编译样器的编译方式不一样,所以答案也许有所不同,例如turbo的编译方式是对a=(i++)+(i++)+(i++); 每一个都进行运算,而vc是分别对三个(i++)进行运算
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-07-29
i=9 k=9
a=21 b=24

a=(i++)+(i++)+(i++);就相当于a=6+7+8

b=(++k)+(++k)+(++k);就相当于b=7+8+9

无论i++还是++k,最后都需要输出+1后的值,所以i和k的值相同,但是运算过程中的先后顺序决定了a和b的值是有差别的
第2个回答  2006-07-29
main()
{ int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("\n i=%d,k=%d",i,k);
printf("\n a=%d,b=%d",a,b);
}
不同的编译器运行的结果会有所不同,i++为后++,在a=(i++)+(i++)+(i++);赋值之前,i的值保持为6 ,语句运行后,再对i进行三次自加运算,所以a的值为18,i的值为9;
++k是前++,在b=(++k)+(++k)+(++k); 赋值语句运行之前就对k进行三次自加运算,K的值为9,所以b==9+9+9==27;
最后的运行结果为
i=9,k=9
a=18,b=27
第3个回答  2006-07-29
main()
{ int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("\n i=%d,k=%d",i,k);
printf("\n a=%d,b=%d",a,b);
}
个人认为答案为:
i=9,k=9
a=24,b=24
虽然i++和++k运算顺序不同。但(i++)和(++k)的运算顺序应该是一样的。

c语言有一道题不会做,求高手解,最好分析一下。
答案是:C 因为scanf("%c%c",&a,&b);接收的是1和2,在输入后按了“回车”这个回车符会传递到下一句,也就是:c=getchar(); ,这样 c 赋值为回车符了;d=getchar(); 接着就是这句,你输入34的时候,d 只接收单个字符,也就是 3 ;所以最后的输出是:12 3 ...

C语言高手,帮帮忙
然后在执行i=st%i,因为初值i=10,经过执行第一句后st=75,所以i=75%10 ,所以是5 (8) !(非) &&(且) ||(或)(9) 1,2,3 因为if的条件是a>c,那么要当a>c成立的时候,才执行后面的语句,但是初值给出了a=1,c=3,所以,不执行后面的语句,所以还是现实原来的值 (10)x=0;...

我这有一道C语言的题看不懂,真心求帮助,各位C语言高手拜托啦,
有两个标量,bottom和top,表示栈底和栈顶,初始时,栈为空,那么bottom和top肯定都是0 目前你栈的存储空间是s(1:40)也就是说最多可以存40个数据 栈每存入一个数据(入栈),top就增1,每出栈一次,top就减1,所以,当你top==20时,栈中现在肯定是20个元素。栈底一直不变 画个简单图:- - ...

一道C语言编程问题,高手们来看看帮忙解答下
for (c = b-1;c > 0;c--)\/\/以C为循环变量,在1到B之间。{ \/\/判断公式左右两侧是不是相等,相等侧符合题目要求 if (c*c*(a*a+b*b) == a*a*b*b){ sum = a+b+c; \/\/判定成立,求和 printf("SUM = %d\\nA = %d\\nB = %d\\nC = %d\\n",sum,a,b,c);return 0;} ...

一个c语言问题,请求高手帮忙。
i=10,j=1,或者说,j被析构了。

C语言指针问题,求高手解答
如果用sizeof它计算出来的会是这个指针的长度,在32系统下,指针一般都是4个字节,所以,结果是4。计算字符串的长度,可以使用库函数strlen来计算,它计算出来的长度不包含字符串结束符\\0。有了这个思路,其实你可以自己写一个函数来计算字符串的长度。使用strlen时要包含string.h头文件。

请高手帮我解决一下这道C语言题目,谢谢!
s=fun(3)=3-fun(3-1)=3-fun(2)=3-2=1 所以选A.

C语言的一个问题,求高手解
+ 1 ) = 1; 0000 0001 short类型是两个字节的,你强转成unsigned char *类型,地址加1则,则地址增加1个字节,所以 你打印的结果应该是这两个合起来的就是 0000 0001 0000 0000,结果应该这个256吧,学C语言不要太纠结于类型什么的,你要知道你真正操纵的是地址。

C语言高手请进啊,高分哦,详细的解释!!!
即 第一个元素为 p[0][0]定义的数组为二维。所以 p[1] 是第二行的全部元素 即 France 另外它不是省略的 p[1][0],两者不同,前者是一行,后者是一个 另外,你可以从c语言的打印方式看出,前者 %s 是打印字符串 后者 %c 是打印字符(一个)希望对你有帮助啊!

谁能帮我解释一下这道c语言题目啊 不懂
:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点。3.格式字符串(格式)〔标志〕〔输出最少宽度〕〔.精度〕〔长度〕类型 "%-md" :左对齐,若m比实际少时,按实际输出。"%m.ns":输出m位,取字符串(左起)n位,左...

相似回答
大家正在搜