[QUOTE][求助]一道C程序题将整型变量a,b中的较小值赋予c,
一,c=(a<b)?a:b;
二,(a<b)?c=a:c=b;
请问哪一个是正确的?[/QUOTE]
一:第一个是说,如果a<b结果是非0(真)的话,那么就将a的值赋予c如果是假的话,那么就将b的值赋予给c,所以这是对的,它相当于条件语句if的用法,c=(a<b)?a:b;可以些成:
if (a<b) c=a;
else c=b;
至于优先级问题,应该是
条件运算符的优先级别比关系运算符和算术运算符都低。所以最后才是算术运算符,可以不用对它们加括号;
二:也因为上述优先级问题所以第二个是先把a赋予给c和b赋予给c然后再进行判断a<b是真还是假,但我想这样会产生错误吧,因为把a已经赋予c又b赋予c,如果此时c的值为b的话,那么这个语句是缺损的,故不能执行,又如果不是这样的话,岂不是同一时刻在存在了两个相同变量了吗?第二种情况是不对的。
个人观点!