条件(C)中可能的赋值
我要找出的是数字“a”是两位数的奇数。如果有错误就会发生条件(C)中可能的赋值,c,gcc,C,Gcc,我要找出的是数字“a”是两位数的奇数。如果有错误就会发生 #include <stdio.h> main () { int a,k; int count=0; printf ("input number \n", a); scanf ("%d", &a); k = a % 2; while (a) { a /= 10; count ++; } if (k = 1 &
#include <stdio.h>
main ()
{
int a,k;
int count=0;
printf ("input number \n", a);
scanf ("%d", &a);
k = a % 2;
while (a)
{
a /= 10;
count ++;
}
if (k = 1 && count = 2)
printf ("It is \n");
else
printf ("It is not \n");
return (0);
}
#包括
主要()
{
int a,k;
整数计数=0;
printf(“输入编号\n”,a);
scanf(“%d”和“&a”);
k=a%2;
while(a)
{
a/=10;
计数++;
}
如果(k=1&&count=2)
printf(“它是\n”);
其他的
printf(“它不是\n”);
返回(0);
}
错误在这里:
if (k = 1 && count = 2)
你可能是说:
if (k == 1 && count == 2)
=
是一项作业<代码>=是相等的比较
此外,循环不是必需的。您可以通过检查数字是否小于100且大于或等于10来检查数字是否为两位数。GCC对此表示不满:
if (k = 1 && count = 2)
相等运算符是双等号:==
。您使用的单等号是赋值运算符
您正在将k
设置为1,将count
设置为2,并且如果if
将始终执行该
您收到的消息旨在帮助人们快速准确地发现这个问题。与CS-101问题的第一天不完全相同,但却是相同的问题。@Nick:最好将您要比较的文本作为左值,就像您当前的情况一样,即使用if(1==k)
而不是if(k==1)
,如果你漏掉了一个“=”,你会得到一个编译时错误。作为开始的习惯,总是为main
使用正确的签名。它应该是int-main(void)
或int-main(int-argc,char*argv[])
或其他任何东西。@other.anon.coward,或者更好的是,只使用-Wall
和-Werror
标志编译,这两个语句都会产生编译错误。