怎么把C语言中定义的符号变量替换为对应的常量?求代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把C语言中定义的符号变量替换为对应的常量?求代码相关的知识,希望对你有一定的参考价值。

#define 变量名 常量值;
const 定义类型 变量名=常量值;
不建议用#define;因为
#define ASPECT_RATIO 1.653

编译器会永远也看不到ASPECT_RATIO这个符号名,因为在源码进入编译器之前,它会被预处理程序去掉,于是ASPECT_RATIO不会加入到符号列表中。如果涉及到这个常量的代码在编译时报错,就会很令人费解,因为报错信息指的是1.653,而不是ASPECT_RATIO。如果ASPECT_RATIO不是在你自己写的头文件中定义的,你就会奇怪1.653是从哪里来的,甚至会花时间跟踪下去。这个问题也会出现在符号调试器中,因为同样地,你所写的符号名不会出现在符号列表中。
解决这个问题的方案很简单:不用预处理宏,定义一个常量:
参考资料:http://zhidao.baidu.com/question/328932810.html
参考技术A #define 变量名 常量值;
或者
const 定义类型 变量名=常量值;
参考技术B #define 变量名 常量值 参考技术C #define 变量名 常量值 参考技术D #define 变量名 常量值

关于C语言中unsigned变量的问题?

为什么一个字面量想表示自己是unsigne得在数值后面加u?不能直接这么定义吗:
unsigne int a=100;

定义:

C语言中定义无符号整型变量如下:

unsigned int num;

定义有符号整型变量如下:

signed int num;

或者

省略signed:int num;

C语言如果不注明是否有符号默认是signed;整型常量默认也是有符号int。

举例说明

比如有定义:unsigned int num = 100;

100是整型常量,因为没有标识编译器默认为有符号int处理。这语句编译会进行隐式转换先把100有符号整数转换成无符号100,再赋值给无符号num变量;

如果有定义unsigned int num = 100u;

那这里是直接告诉编译器100要当作无符号整数进行处理,那就可以直接把100u赋值给num变量。

补充说明:

这里因为100的有符号无符号二进制是一样的,并看不出来有什么不同,如果在超过有符号可表示的范围就不一样了这可以自己实验一下。

所以在写代码时可以手动加上标识符u来告诉编译器如何处理这个整型常量。

参考技术A

变量可以用unsigned修饰,常量就不行了

所以要在整型常量后加u,表示无符号数

参考技术B 这只是一个规定而已,是为了区分signed int 100和unsigned int 100 参考技术C 这种情况还是要具体问题具体分析很多情况也是进行相关的情况用相关的调整还是要可以具体问题具体分析也是可以

以上是关于怎么把C语言中定义的符号变量替换为对应的常量?求代码的主要内容,如果未能解决你的问题,请参考以下文章

C语言中怎么定义常变量

c语言定义常量define

C语言里符号常量和常变量有啥区别?

关于C语言中unsigned变量的问题?

C语言符号常量定义

如何宏定义一个字符串变量?