#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(输入)的值?如果条件差= =和==
#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(输入)的值?如果条件差= =和==
这将始终等于true,因为=实际上是设置值,而不是测试是否相等。使用==来测试是否相等。
=
运算符将左值(在您的情况中,i
)的值设置为右侧的表达式,然后返回变量的新值。这意味着i=5
将i设置为5,然后返回5,总是为5 != 0
。因此,您的程序会在打印第一个号码后立即退出,即1
。
万一你没有听到的是,=
操作员设置左值到右手侧的表达式中的值(在你的情况,I
),然后返回变量的新值。这意味着I=5
设置1到5,然后返回5,其总是如同5 != 0
。因此,您的计划立即退出第一个数字打印后,即1
。
也许他的问题是C是区分大小写的? –
尽管OP在大喊,但答案并不需要回应OP的糟糕介绍。建议不要回头去掉冗余的大写部分。 – chux
==
将检查两个值是否相等。 =
将作为一项任务。因此 i=5
将始终为真,循环将为break
。
说起来,我听不到你。 –
你为什么要出门!?您是否按了事故按键锁定键? – StoryTeller
因为'if(i = 5)'将'5'分配给'i',因为它是非零的,所以它的评价是真实的。 –
比较运算符'=='看起来像一副耳环。不确定为什么我想到这个,只是发生了我的想法。 –