小编Jel*_*tra的帖子

在没有括号的if语句中调用函数

Fedora Linux上最新版本的gcc和clang编译以下程序时没有错误:

#include <ctype.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    char c = 'a';
    if islower(c)
        printf("%d", c);
    else
        printf("%c", c);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是使用gcc 4.7.2和clang 3.0.相比之下,在我的Mac上,gcc 4.2.1和Apple clang 4.1都抱怨"if islower(c)"行中的括号丢失,正如预期的那样.在所有情况下,我使用"-std = c99"运行编译器.

这是最近版本的gcc和clang中的一个错误,C语言中的怪癖还是其他什么?C99标准(http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf第133页)似乎在所有情况下都要求使用括号.

c syntax

7
推荐指数
2
解决办法
1060
查看次数

标签 统计

c ×1

syntax ×1