C中循环的默认数据类型变量

时间:2016-10-14 16:17:50

标签: c

在C中,循环中定义的变量的默认数据类型是什么?

for(k = 0; expression2; expression3) {
}

有效,

也是如此
for(int k = 0; expression2; expression3) {
}

如果我没有为变量k指定数据类型,那么编译器会做什么?

3 个答案:

答案 0 :(得分:2)

在当前的C标准中(C11,但对于C99也是如此),没有“隐式”类型。

不同的编译器会以不同的方式报告错误。海湾合作委员会说:

test.c: In function ‘main’:
test.c:2:9: error: ‘k’ undeclared (first use in this function)
     for(k=0;k<2;k++) {
         ^
test.c:2:9: note: each undeclared identifier is reported only once for each function it appears in

在C89 / C90中有一个“隐式int”规则,但在这种情况下不适用。这里,除非之前声明了变量,否则编译错误。

答案 1 :(得分:1)

  

如果我没有指定变量k的数据类型,那么编译器会做什么?

for循环初始化中定义的变量没有默认类型。它只是所有C标准中的语法错误。

由于C99允许在for循环的初始化部分和C99之前声明变量,所以你必须在循环外声明它并且只允许在范围的开头。

/* Allowed in C99 and above */
for(int k = 0; expression2; expression3) {
}

/* Unless k is defined before, this is a syntax error */
for(k = 0; expression2; expression3) {
}

答案 2 :(得分:1)

没有什么叫默认数据类型.. !!    我们必须根据我们访问的数据类型指定数据类型。      如果我们没有指定数据类型,编译器会弹出编译时错误,指出特定变量未声明