-5

我在源文件之一中有如下代码:

#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如果是,为什么不执行?

PS:由于时间限制,我没有坐下来很长时间。如果您在代码中发现幼稚的错误,请原谅我。

4

6 回答 6

4

你试过编译它吗?

您的 if 语句还需要一个)。那或将其简化为:

if ((d <= b) && (d == c / sizeof(a)))

对于 C99,您的 printf 语句应该使用 "%zu\n",尽管它很复杂

于 2012-09-06T15:32:01.577 回答
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;

}

实际上,您可以在代码段中自行删除一些括号。

于 2012-09-06T15:34:03.960 回答
1

尝试在printf语句中添加换行符:

printf("%d\n", sizeof a);

标准输出通常是缓冲的,因此输出并不总是立即显示在您的控制台上,除非有换行符或您在调用 fflush(stdout);后添加 a。printf

于 2012-09-06T15:32:45.163 回答
1
((d <= (b) && (d == ( c / sizeof(a)))) 

在. (_b

( (d <= b) && (d == (c/sizeof(a))))
于 2012-09-06T15:32:51.800 回答
1

您忘记在第 11 行关闭一个括号,您打开了六个并关闭了五个。

于 2012-09-06T15:34:26.227 回答
1

我认为你的 if 语句有问题,它应该是这样的

if ( (d <= b) && (d == ( c / sizeof(a))))

你有一个额外的(在'b'的左侧

于 2012-09-06T15:36:03.153 回答