我在其中一个源文件中有代码如下:
#include <stdio.h>
#include <math.h>
int a ;
int b = 256 ;
int c = 16 ;
int d = 4 ;
int main() {
if ((d <= (b) && (d == ( c / sizeof(a))))
{
printf("%d",sizeof(a) );
}
return 0;
}
我删除了演员表并简化了数据名称。 sizeof(a)
可以视为4.我想知道if
语法是否有效,如果是,为什么不执行?
答案 0 :(得分:4)
你试过编译吗?
你的if语句还需要一个)。那或简化为:
if ((d <= b) && (d == c / sizeof(a)))
你的printf语句应该对C99使用“%zu \ n”,尽管it's complicated。
答案 1 :(得分:2)
IMO缺少一个结束括号。我用垂直括号对齐技术打开你的if。
#include <stdio.h>
#include <math.h>
int a ;
int b = 256 ;
int c = 16 ;
int d = 4 ;
int main() {
if (
(
d <= (b) && (
d == (
c / sizeof(a)
)
)
)
//Here needs another closing parantheses
{
printf("%d",sizeof(a) );
}
return 0;
}
实际上你可以在你的代码段中删除一些括号。
答案 2 :(得分:1)
尝试在printf
声明中添加换行符:
printf("%d\n", sizeof a);
标准输出通常是缓冲的,因此输出并不总是立即显示在控制台上,除非有换行符或在fflush(stdout);
调用后添加printf
。
答案 3 :(得分:1)
((d <= (b) && (d == ( c / sizeof(a))))
在(
之前查看额外的b
。
( (d <= b) && (d == (c/sizeof(a))))
答案 4 :(得分:1)
您已忘记在第11行关闭一个括号,您已打开六个并关闭五个。
答案 5 :(得分:1)
我认为你的if语句有问题,它应该是这样的
if ( (d <= b) && (d == ( c / sizeof(a))))
你有一个额外的(在'b'的左侧