Mat*_*iac -1 c if-statement operators output
void main()
{
int i=4,j=12;
if(i=5 && j>5)
printf("Hi!");
else
printf("Hello!");
}
Run Code Online (Sandbox Code Playgroud)
首先,上面代码的输出是Hi!.据我所知它应该显示语法错误,因为i = 5是一个assingment操作符而不是i == 5,如果i == 5那么它也是假的并且应该打印您好,但怎么打印嗨?
if语句中的条件
if(i=5 && j>5)
Run Code Online (Sandbox Code Playgroud)
相当于
if( i = ( 5 && j>5 ))
Run Code Online (Sandbox Code Playgroud)
由于5不等于0且j确实大于5,因此表达式( 5 && j>5 )求值1并赋值给变量i.
来自C标准(6.5.16分配操作员)
3赋值运算符将值存储在左操作数指定的对象中.赋值表达式具有赋值后左操作数的值 ...
因此,当变量的值i等于,1则执行if条件.
看来你的意思是
if(i==5 && j>5)
^^^^
Run Code Online (Sandbox Code Playgroud)
考虑到根据C标准,没有参数的函数main应声明为
int main( void )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |