2017-02-21 59 views
-9
#include<stdio.h> 
int main() 
{ 
int i=1,n; 
printf("enter value of n"); 
scanf("%d",&n); 
for(i=1;i<=n;i++) 
{ 
    printf("%d",i); 
    if(i=5) 
    break; 
} 
} 

为什么我的代码的输出是1,它不依赖于N(输入)的值?如果条件差= =和==

+6

你为什么要出门!?您是否按了事故按键锁定键? – StoryTeller

+1

因为'if(i = 5)'将'5'分配给'i',因为它是非零的,所以它的评价是真实的。 –

+1

比较运算符'=='看起来像一副耳环。不确定为什么我想到这个,只是发生了我的想法。 –

回答

3

这将始终等于true,因为=实际上是设置值,而不是测试是否相等。使用==来测试是否相等。

11

=运算符将左值(在您的情况中,i)的值设置为右侧的表达式,然后返回变量的新值。这意味着i=5将i设置为5,然后返回5,总是为5 != 0。因此,您的程序会在打印第一个号码后立即退出,即1

万一你没有听到的是,=操作员设置左值到右手侧的表达式中的值(在你的情况,I),然后返回变量的新值。这意味着I=5设置1到5,然后返回5,其总是如同5 != 0。因此,您的计划立即退出第一个数字打印后,即1

+0

也许他的问题是C是区分大小写的? –

+0

尽管OP在大喊,但答案并不需要回应OP的糟糕介绍。建议不要回头去掉冗余的大写部分。 – chux

2

==将检查两个值是否相等。 =将作为一项任务。因此 i=5将始终为真,循环将为break

+2

说起来,我听不到你。 –