问个#if预编译的问题,谢谢

C语言 码拜 8年前 (2016-06-01) 794次浏览
本人在头文件中写的如下:
#define a 14
#if    (a%8 == 0)
#define       b        (a/8)
#else
#define       b        (a/8+1)
#endif
在程序中:
unsigned char i;
i  = b;
按照道理来说i应该等于2,但为什么本人测试时是1呢?,谢谢,在c++builder中测试
解决方案

6

vs 测试 2

7

本人是在linux下用C 写的,使用gcc编译,得出结果是2。本人感觉你问题应该出在 除号“/”上,C语言内 / 表示取整,不是到你那个编译器是怎么定义的。

7

$ cpp a.c
# 1 “a.c”
# 1 “<built-in>”
# 1 “<command-line>”
# 1 “a.c”
unsigned char i;
i = (14/8+1);
这是预处理后的结果

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问个#if预编译的问题,谢谢
喜欢 (0)
[1034331897@qq.com]
分享 (0)