当前位置: 技术问答>linux和unix
求助:一个关于C的问题
来源: 互联网 发布时间:2016-09-19
本文导语: int main(int argc,char *argv[]) { int c=9,d=0; c=c++%5; d=c; printf("d=%dn",d); return 0; } a) 写出程序输出 | 这是一个考运算符优先级和后自增的题 c=c++%5;这句的计算顺序 (1)% c%5==>4 (2)++ 注意这里是后++, (3)= ...
int main(int argc,char *argv[])
{
int c=9,d=0;
c=c++%5;
d=c;
printf("d=%dn",d);
return 0;
}
a) 写出程序输出
{
int c=9,d=0;
c=c++%5;
d=c;
printf("d=%dn",d);
return 0;
}
a) 写出程序输出
|
这是一个考运算符优先级和后自增的题
c=c++%5;这句的计算顺序
(1)% c%5==>4
(2)++ 注意这里是后++,
(3)= 这时c仍然是4
d=c; // 这时后++开始生效,c和d都变成5,所以结果是5。
c=c++%5;这句的计算顺序
(1)% c%5==>4
(2)++ 注意这里是后++,
(3)= 这时c仍然是4
d=c; // 这时后++开始生效,c和d都变成5,所以结果是5。
|
c=c++%5;
d=c;
=======================
可看成:
c = c % 5; /* c = 4 */
c++; /* c = 5 */
d = c; /* d = 5 */
========================
d=c;
=======================
可看成:
c = c % 5; /* c = 4 */
c++; /* c = 5 */
d = c; /* d = 5 */
========================
|
最好的办法就是单步调试,跟踪一下就啥都明白了
|
上面几楼说得正确
|
说的很明白了
|
可以看一下运算符的优先级,LS的同志们解释的很清楚了
|
看来,上面的哥们已经解释的够清楚了!
|
如果一个变量多次出现在一个表达式里的时候 不要将增量或减量运算符运用到它的上面
更准确的说 这个结果不确定 C标准没有定义
|
正解
|
考试有这样的题也就算了,实际工作中,如果有程序员写出这样的代码,我一定会请他重写。
|
自己去执行 加单步调试一下好清楚。看看 值是怎么变化的