当我尝试定义类型为long long int的变量时,我注意到了一种非常奇怪的行为。
例如,以这种方式编写的代码可以正常工作:
#include <stdio.h>
#define STR_LEN 20
int main()
{
long long broj = 1;
char str[STR_LEN];
scanf("%s", str);
return 0;
}
但是,用这种方式编写的代码无法编译:
#include <stdio.h>
#define STR_LEN 20
int main()
{
char str[STR_LEN];
scanf("%s", str);
long long broj = 1;
return 0;
}
编译器提供以下消息: 错误C2143:语法错误:缺少&#39 ;;&#39;之前&#39;键入&#39; 这不是很有用......我正在使用Visual Studio 2010。
有关此行为的任何想法?感谢。
答案 0 :(得分:1)
在Visual Studio 2010(C89)中,始终在程序开头初始化变量。
答案 1 :(得分:0)
有关此行为的任何想法?
是。 Visual Studio 2010不支持混合类型声明。在C99模式下使用GCC编译代码(使用选项-std=c99
),它将正常工作。 ISO C99和ISO C ++允许声明和代码在复合语句中自由混合
作为extension,GCC也允许在C89模式下使用
答案 2 :(得分:0)
long
是一个限定符,不是一个类型,你没有明确声明一个类型