C语言中 给全局变量用表达式赋值的问题!~~

来源:百度知道 编辑:UC知道 时间:2024/06/16 08:21:31
#define uint unsigned int
#define a 10
uint b=3;
需要再加一个全局变量C,值为:a*b,我用uint c=a*b;其实错误,请问正确应该怎么写?

可以这么写:
#define uint unsigned int
#define a 10
const uint b=3; /////////////注意,这里加了const,把b赋值为3,并且不可改变,它需要在c=a*b之前
uint c=a*b;
int main
{
//...
}

也可以这么写:
#define uint unsigned int
#define a 10
uint b=3; /////////////b是全局变量,也可以放在main函数里面,作为局部变量
uint c;
int main
{
c=a*b;////////在程序里,给全局变量,用其他变量赋值
//...
}

总结:
1、如果用常量给全局变量赋值,可以在声明全局变量的时候,就对其赋值。
2、如果要用变量给全局变量赋值,赋值语句,必须写在程序里面。

将C定义为宏,满足楼主的要求,输出结果如下:
30
60
Press any key to continue

程序如下:
#include <stdio.h>
#define a 10
#define unit unsigned int
unit b=3;
#define C a*b

void main()
{
printf("%u\n",C);
b=6;
printf("%u\n",C);
}

如果不用宏,直接用uint C=a*b;两次结果都为30,不变,不是想要的

1.全局变量(包括静态内部变量)的初始化是在编译阶段进行,与编译预处理(#define a 10 )的处理过程在同一阶段,冲突。
#include <stdio.h>
#de