(菜鸟)想半天也不明白为什么不是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
fsysky
不同的编译器,解释不一样的,会有不同结果。最好不要写这样的代码。
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
原创CPP
因为i++和i--都是先用i的,然后再自加自减
2012年09月12日 03点09分
4
level 8
DSoong
貌似开学了,这类问题多了不少
2012年09月12日 03点09分
5
九重影999
笑而不语
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
china_gll
2012年09月12日 03点09分
8
贴吧用户_0V58V2D
[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
Hope_20121221_
未定义行为
2012年09月12日 04点09分
12
level 6
summmoner
这种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
我是不是师兄
哦 看错了 只是UB而已
2012年09月12日 06点09分
我是不是师兄
回复 妄为的Libra :
http://www.baidu.com/s?tn=baiduhome_pg&ie=utf-8&bs=%E6%9C%AA%E5%AE%9A%E4%B9%89%E8%A1%8C%E4%B8%BA&f=8&rsv_bp=1&rsv_spt=1&wd=C%E8%AF%AD%E8%A8%80+%E6%9C%AA%E5%AE%9A%E4%B9%89%E8%A1%8C%E4%B8%BA&rsv_sug3=2&inputT=1847
2012年09月12日 07点09分
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
QHearting
{[(n=i)++]==i}++ 假
2012年09月12日 07点09分
17
我是不是师兄
从优先机开始就一路错下去了 对于C语言 (n=i)++这样是ERROR
2012年09月12日 08点09分
QHearting
n=i++是不是先把i赋值给n,然后i再自增啊?比如初始i=2,n=i++后n值为2,i值为3对吗? 我刚才说的不对。
2012年09月12日 08点09分
李石头少爷
你比我还菜鸟,我喜欢你哈哈哈哈
2012年09月12日 09点09分
lovexsky
那个是中括号和大括号么.
2012年09月13日 12点09分
level 8
汉赋唐诗宋明P
0
2012年09月12日 07点09分
18
level 8
汉赋唐诗宋明P
...楼主确定你没打错题目?如果没错的话这样算:
#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分
汉赋唐诗宋明P
回复 李石头少爷 :++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
尾页