(菜鸟)想半天也不明白为什么不是0而是1
c语言吧
全部回复
仅看楼主
level 6
int n,i=2;
n=i++==i--;
2012年09月12日 02点09分 1
level 6
刚看书上说,是自加自减先算,然后3==1结果为0,最后赋给n,可运行结果是1
2012年09月12日 03点09分 2
不同的编译器,解释不一样的,会有不同结果。最好不要写这样的代码。
2012年09月13日 06点09分
回复 fsysky :同意,我用c-free输出的是一个好长的数字
2012年09月14日 09点09分
level 11
[揉脸]目测是比较完成后再自加自减
2012年09月12日 03点09分 3
也就是说n=2-L-
2012年09月12日 03点09分
level 10
因为i++和i--都是先用i的,然后再自加自减
2012年09月12日 03点09分 4
level 8
貌似开学了,这类问题多了不少
2012年09月12日 03点09分 5
笑而不语
2012年09月13日 16点09分
level 6
3楼说的对吗[疑问]我怎么觉得要先自减呢
2012年09月12日 03点09分 6
level 6
按四楼说的,i自减得1,然后自加得时候用1加得2,然后比较得时候不还是不相等吗
2012年09月12日 03点09分 7
level 10
2012年09月12日 03点09分 8
[eax]=i; [ecx]=i; i--; i++; n= ([eax]==[ecx]) ? 1 : 0; 明显是debug代码。
2012年09月12日 08点09分
[黑线]汇编表示还没学,楼主菜鸟一条
2012年09月12日 09点09分
level 15
UB,别指望结果。
2012年09月12日 04点09分 10
[疑问]求指点,UB是什么呀
2012年09月12日 09点09分
回复 李石头少爷 :Undefined behavior.
2012年09月12日 09点09分
level 11
未定义行为
2012年09月12日 04点09分 12
level 6
这种2B代码 不会有人用
2012年09月12日 04点09分 13
[黑线]楼主现在得水平连这种代码都不能理解,要继续努力才行哈
2012年09月12日 09点09分
level 4
我晕 又是这种表达式 i++ 和 i--的序点是;也就是说i的值在这个表达式就没变过直到;以后
2012年09月12日 06点09分 14
这是什么手机,我也想要[来]
2012年09月13日 12点09分
我大尼采手机
2012年09月13日 15点09分
理解错误。
2012年09月13日 17点09分
level 12
语法错
2012年09月12日 06点09分 15
level 7
#include <stdio.h>
int main()
{ char c,a;
printf("pls input a char1:");
a=getchar();
printf("%d\n",a);
fflush(stdin);
printf("pls input a char2:");
do
{
c=getchar();
printf("%d\n pls input a char3\n:",c);
fflush(stdin);
}while(c!= '\0');
return 1;
}

2012年09月12日 06点09分 16
[委屈]这是什么哈,看的半懂不懂的
2012年09月12日 09点09分
level 9
{[(n=i)++]==i}++ 假
2012年09月12日 07点09分 17
从优先机开始就一路错下去了 对于C语言 (n=i)++这样是ERROR
2012年09月12日 08点09分
n=i++是不是先把i赋值给n,然后i再自增啊?比如初始i=2,n=i++后n值为2,i值为3对吗? 我刚才说的不对。
2012年09月12日 08点09分
[黑线]你比我还菜鸟,我喜欢你哈哈哈哈
2012年09月12日 09点09分
[啊!]那个是中括号和大括号么.
2012年09月13日 12点09分
level 8
0
2012年09月12日 07点09分 18
level 8
...楼主确定你没打错题目?如果没错的话这样算:
#include<stdio.h>
main()
{
int n,i=1;
n=i++==i--;
printf("%d",n);
}
对于 n=i++==i--; ,应理解为 n=(i++==i--);(因为关系运算符比赋值运算符优先级高,而i++和i--都是去1,即1==1;所以关系表达式里的值为1,然后再把1赋予给n,故最后n=1)

2012年09月12日 08点09分 19
我得疑问就在自加自减那里,为什么会是i相等呢
2012年09月12日 09点09分
回复 李石头少爷 :++i和i++有区别的,这样理解吧: 设i=1;j=i++,那么等同于(j=i;i++即先用i参与运算,然后i再+1)所以得i=2,j=1 设i=1;j=++i,那么等同于(i++;j=i即i先自增1,然后再参与运算)所以得i=2,j=2
2012年09月13日 09点09分
level 9
首先说你这种代码~~呵呵~~小白~~
第二开始解释此代码
n=i--==i++;
可以理解为n=(i--==i++);
而括号里面的运算是先取i的值(不懂的话就好好先研究下i++与++i的区别)
所以说括号里的值为1,也就是说(i==i)。
2012年09月12日 08点09分 20
不是这样的 涉及未定义行为 你怎么知道 两次i++的时候 i的原值是一样的?
2012年09月12日 08点09分
回复 我是不是师兄 :不是定义过了吗?i=2~~说代码时请先自己编译~~~
2012年09月12日 08点09分
回复 我是不是师兄 :再说~~i首先不参与运算~~==后才运算的加减~~
2012年09月12日 08点09分
@小段果果 15L 有一个链接 有兴趣去看一下吗?
2012年09月12日 08点09分
level 4
涉及到优先级的问题 最先执行饿就是 ==
i++ 的自增运算要低于== 所以i++==i- - 的结果为 真(1)
赋值给 n
n就是1
2012年09月13日 09点09分 22
你无聊
2012年09月13日 12点09分
1 不是优先级的问题 2 优先级你弄错了 == 低于 ++运算符和--运算符 准确的说是远远低于
2012年09月14日 02点09分
1 2 尾页