关于c语言变量定义的注意事项

在标准C中规定变量定义必须放在所有的执行语句之前!一旦在运行语句之间再有定义的话,会报错误!

见以下式例:

#include <stdio.h>
#include <stdlib.h>
int main()
{
char char1='A';
printf("
大写字符=%cASCII=%d/n",char1,char1);
char char2=char1+32;
printf("
小写字符=%cASCII=%d/n",char2,char2);
system("pause");
return 0;
}

把上述代码放到命名为test.c的文件中(VC 6.0调用C编译器),编译。出现编译错误:

d:/project/c++/test/1.c(12) : error C2143: syntax error : missing ';' before 'type'

d:/project/c++/test/1.c(14) : error C2065: 'char2' : undeclared identifier

这就是因为在上述代码中char char2=char1+32;的定义放在了执行语句printf("大写字符=%cASCII=%d/n",char1,char1);的后面导致的;一旦把上述同样的语句放到了.cpp文件中(VC 6.0调用C++编译器),编译没有问题,这是因为编译器认为上述代码是C++语法格式的,在C++中没有严格要求变量定义一定要放在执行语句之前。

如果在.c文件中执行上述代码的话,可以在编译器设置用C++编译!

 

.c文件中(C)正确的代码为:

#include <stdio.h>
#include <stdlib.h>
int main()
{
char char1='A';

char char2=char1+32;
printf("
大写字符=%cASCII=%d/n",char1,char1);
/*char char2=char1+32; */ /*
C中变量定义必须放在所有的执行语句之前!*/
printf("
小写字符=%cASCII=%d/n",char2,char2);
system("pause");
return 0;
}

这其实是C 标准的问题 C89 不允许变量声明和执行语句混合写 C99允许 ,C++ 也允许,gcc 有很多扩展的功能。

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值