在C中,循环中定义的变量的默认数据类型是什么?
for(k = 0; expression2; expression3) {
}
有效,
也是如此for(int k = 0; expression2; expression3) {
}
如果我没有为变量k
指定数据类型,那么编译器会做什么?
答案 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)
没有什么叫默认数据类型.. !! 我们必须根据我们访问的数据类型指定数据类型。 如果我们没有指定数据类型,编译器会弹出编译时错误,指出特定变量未声明