首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

没有定义的变量,也能用?该怎么处理

2012-02-14 
没有定义的变量,也能用?#include stdio.hvoidf(a){a10a++}voidmain(){inta10f(a)}-------我的问题

没有定义的变量,也能用?
#include <stdio.h>
void   f(a)
{
        a=10;
        a++;
}
void   main()
{
        int   a=10;
        f(a);
}
-------
我的问题是上面f(a)函数中a没定义也能用?

[解决办法]
怎么可能???我用VC6怎么就编译不通过呢??
[解决办法]
参数必须提供类型。
[解决办法]
void f(a, b)
{
a++;
b++;
}
这个在C语言中是允许的,是一种不定型参数。
但它可以存在潜在的风险:
比如在32位机器里面,这样的参数传递不大于32位的值,它能很好地工作,一旦参数超过32位,则它的行为就不确定了,将会发生参数按32位对齐入栈,出现难以调试的BUG。
比如用f((__int64)0x8888888899999999L, (char)5);那么a, b 的值会是怎么样的呢?
a = 0x88888888, b = 0x99999999 !!!

[解决办法]


c语言里可以(用c编译)

val = 100;

void main()
{
val = "adsfsadf ";

}

甚至这样都可以



[解决办法]
好像在哪个书上看到说最初的C定义(旧规定)是支持的,而且现在有了新规定,但新编译器貌似也还支持原来的一些定义方式.
[解决办法]


vs2005 如果用c编译,还是支持

val = 100;

void main()
{
val = "adsfsadf ";

}





[解决办法]
C标准就是这样子的,如果一个变量未说明类型就认为它是int类型。
[解决办法]
学习了。
C标准还有这个定义呀。:)
[解决办法]
C标准就是这样子的,如果一个变量未说明类型就认为它是int类型。
==========
好像是这样的

热点排行