没有定义的变量,也能用?

computerclass 2007-08-29 11:07:46
#include<stdio.h>
void f(a)
{
a=10;
a++;
}
void main()
{
int a=10;
f(a);
}
-------
我的问题是上面f(a)函数中a没定义也能用?
...全文
206 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2007-08-30
  • 打赏
  • 举报
回复


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

val = 100;

void main()
{
val = "adsfsadf";

}

甚至这样都可以



sunlin7 2007-08-30
  • 打赏
  • 举报
回复
void f(a, b)
{
a++;
b++;
}
这个在C语言中是允许的,是一种不定型参数。
但它可以存在潜在的风险:
比如在32位机器里面,这样的参数传递不大于32位的值,它能很好地工作,一旦参数超过32位,则它的行为就不确定了,将会发生参数按32位对齐入栈,出现难以调试的BUG。
比如用f((__int64)0x8888888899999999L, (char)5);那么a, b 的值会是怎么样的呢?
a = 0x88888888, b = 0x99999999 !!!
bill2ccssddnn 2007-08-30
  • 打赏
  • 举报
回复
C标准就是这样子的,如果一个变量未说明类型就认为它是int类型。
==========
好像是这样的
lockhall 2007-08-30
  • 打赏
  • 举报
回复
学习了。
C标准还有这个定义呀。:)
  • 打赏
  • 举报
回复
C标准就是这样子的,如果一个变量未说明类型就认为它是int类型。
星羽 2007-08-30
  • 打赏
  • 举报
回复


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

val = 100;

void main()
{
val = "adsfsadf";

}





Vita_Chen 2007-08-30
  • 打赏
  • 举报
回复
好像在哪个书上看到说最初的C定义(旧规定)是支持的,而且现在有了新规定,但新编译器貌似也还支持原来的一些定义方式.
cnvb 2007-08-29
  • 打赏
  • 举报
回复
我就是以.cpp文件保存的...但是不可能通过编译...明显的错误指出变量a没有被定义啊...

不知楼主你是怎么通过编译的???
computerclass 2007-08-29
  • 打赏
  • 举报
回复
如上面的为.cpp编译报错,但为.c编译和运行都没有问题呀
----这个原因是什么??
computerclass 2007-08-29
  • 打赏
  • 举报
回复
如上面的为.cpp编译报错,但为.c编译和运行都没有问题呀
lockhall 2007-08-29
  • 打赏
  • 举报
回复
参数必须提供类型。
cnvb 2007-08-29
  • 打赏
  • 举报
回复
怎么可能???我用VC6怎么就编译不通过呢??
computerclass 2007-08-29
  • 打赏
  • 举报
回复
开发环境:vc++6.0中的C语言程序

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧