下面A,B两个程序片段的功能一样吗?

来源:百度知道 编辑:UC知道 时间:2024/06/12 16:17:29
A: if(x) x++;
if(!x) x--;
B: if(x) x++;
else x--;
在线等待,各位大侠请指教!

不一样。
在A组中, !x 这个表达式会无条件地进行求值计算。而在B组中,如果x为真,则后面的语句不予理会。
在C语言中,这两段的最终结果是一样的,但流程不一样,效率也不一样。B组会更快。
请将你的代码改成如下,你就能更深刻地体会到两者有什么不同。
int x=1;
if(x) x--;
if(!x) x++;
x=1;
if(x) x--;
else x++;

不同的语言答案会是不同
C语言结果大多的x结果会相同,不过当x=-1时
A:两个if语句,为两个条件语句.第一个if语句影响了第二个if语句
x=-1;
A: if(x) x++; x=0
if(!x) x--; x=-1
B:一个if语句,为一个条件语句
x=-1;
B: if(x) x++; x=0
else x--; 不执行