在下面的第一个程序中没有错误.但是对于第二个程序存在错误.为什么会这样?
第一个项目:
#include<stdio.h>
void main()
{
int k=8;
int m=7;
k<m?k=k+1:m+1;
printf("%d",k);
}
Run Code Online (Sandbox Code Playgroud)
第二个方案:
#include<stdio.h>
void main()
{
int k=8;
int m=7;
k<m?k=k+1:m=m+1;
printf("%d",k);
}
Run Code Online (Sandbox Code Playgroud)
条件运算符的优先级高于赋值运算符.您需要额外的括号才能获得所需的优先级.
k < m? k = k + 1 : m = m + 1;
Run Code Online (Sandbox Code Playgroud)
被评估为
((k < m) ? (k = k + 1) : m) = m + 1;
Run Code Online (Sandbox Code Playgroud)
添加括号以获得正确的优先级:
(k < m) ? (k = k + 1) : (m = m + 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |