我对以下代码感到惊讶,
#include<stdio.h>
typedef int type;
int main( )
{
type type = 10;
printf( "%d", type );
}
这经历了,程序的输出是 10。
但是当我如下稍微更改代码时,
#include<stdio.h>
typedef int type;
int main()
{
type type = 10;
float f = 10.9898;
int x;
x = (type) f;
printf( "%d, %d", type, x);
}
在 aCC 编译器中:
"'type' 被用作类型,但尚未被定义为类型。"
在 g++ 编译器中:
“错误:预期的';' f"之前
是不是编译器在第二种情况下没有识别出模式,因为这种模式可能与变量的赋值、表达式的评估等有关,而在第一种情况下,这种模式仅在定义变量时使用,编译器识别它.