在下面的第一个程序中没有错误。但是对于第二个程序存在错误。 为什么会这样?
第一个程序:
#include<stdio.h>
void main()
{
int k=8;
int m=7;
k<m?k=k+1:m+1;
printf("%d",k);
}
第二个程序:
#include<stdio.h>
void main()
{
int k=8;
int m=7;
k<m?k=k+1:m=m+1;
printf("%d",k);
}
答案 0 :(得分:5)
条件运算符的优先级高于赋值运算符。您需要额外的括号才能获得所需的优先级。
k < m? k = k + 1 : m = m + 1;
评估为
((k < m) ? (k = k + 1) : m) = m + 1;
添加括号以获得正确的优先级:
(k < m) ? (k = k + 1) : (m = m + 1);
答案 1 :(得分:1)
它没有错误。两个程序都输出8,这是正确的。