本人在头文件中写的如下:
#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中测试
#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);
这是预处理后的结果
# 1 “a.c”
# 1 “<built-in>”
# 1 “<command-line>”
# 1 “a.c”
unsigned char i;
i = (14/8+1);
这是预处理后的结果