#include
int main()
{
int a,b,c;
for (a=1;a<=2;a++)
{
if(a=1) {b=1;c=1;}
//if(a=2) { b=3;c=2;}
//if( a==b&&a==c )
printf("%d%d",a,b);
}
return 0;
}
改成if(a==1)
判断相等用==,赋值用=。写成=,a一直被赋值为1 ,一直<=2
#include <stdio.h>
int main()
{
int a,b,c;
for (a=1;a<=2;a++)
{
if(a==1) //判断相等用==,赋值用=。写成=,a一直被赋值为1 ,一直<=2
{
b=1;
c=1;
}
printf("%d%d",a,b);
}
return 0;
}
知识点:
①=:表示赋值运算符,并不是等于,与数学上是不同的
②==:这才是表示赋值
解释你的为什么一直循环没有停:
进入循环,首先你是对a赋值一直是1,1
是非0,表示逻辑真,继续执行,无论你a++如何
变,进入了循环后,a又变成了1,并不满足停止循环的条件,所以循环没停止,一直是输出1
因为你写的if(a=1)在里面相当于把1赋值为1,使得可以一直进行该循环条件,可以将其改为if(a==1)
#include <stdio.h>
int main()
{
int a,b,c;
for (a=1;a<=2;a++)
{
if(a==1) //判断相等用==,赋值用=。由于你写成=,导致a一直是1,所以死循环了
{
b=1;
c=1;
}
printf("%d%d",a,b);
}
return 0;
}
if(a=1) {b=1;c=1;}这里有问题
==,在c语言中才相当于数学上的等于。=在c语言中是赋值的意思。0为假,1为真。你这写,就相当于你的if判断恒为真。
你在for循环里的if语句里把1赋值给了a,永远满足循环条件
你在判断的过程中一直给a赋予1怎么也跳不出来啊。想验证是不是很简单啊 打个断点你就知道了。
这就是典型的判断语句写成了赋值语句
if(a=1) {b=1;c=1;}
每次执行到这里,a被赋值为1,执行完去判断循环条件,1肯定小于2,所以一直循环
if中判断相等要用"==",而不是赋值"="。
赋值用==
a是从1开始进行,满足条件后进入if语句,问题就在这,你if有给a赋值成1然后接着往下进行输出,依次类推,你a永远都是1,条件一直被满足所以无限输出;(a=1)是赋值的意思,a==1才行
if a==1这是判断 =是赋值
每次循环都是把1赋给了a,导致每次循环都是重新开始导致无限循环
if(a=1) 然后当a=2的时候,又被你赋值为1了,这样就一直循环了
=表示赋值运算符 ==这才是表示赋值
判断条件用得都是==
if括号里不停给a赋值1,所以a++不起效果,并且if括号里的结果只有真和假,非零为真,零为假。因为一直是1,一直为真,所以一直运行
=是赋值,==号才是判断
一个等号是赋值,赋值语句为真,相当于里边循环每次把a的值赋值为1,就死循环了,改成if(a==1)才是比较a是否为1
#include <stdio.h>
int main()
{
int a,b,c;
for (a=1;a<=2;a++)
{
if(a==1) //一个等号是赋值,赋值语句为真,这里相当于每次把a的值赋值为1,最终就是a会一直<=2,死循环
{
b=1;
c=1;
}
printf("%d%d",a,b);
}
return 0;
}