C/C++的define和char
呜呜呜,C语言白学了.jpg
今天看C4P(C++ Primer Plus)才发现两个东西:
- define不是全文替换,而是单词替换;
假设有如下代码段:
#include ...
#define test "sss"
...
    char s[] = test;
    float tested = 1;
    printf("%s test\n", s);
...输出是sss test而不是sss "sss"。(C++支持连续字符串自动拼接)
(如果要验证define会不会替换变量名的话,得要至少两个文件才行)
- C语言的字符常量是按照int大小(通常是4Bytes)存储的。C++早期也是,后来才改成了和char一致的大小(按int存储的话会导致cout以数字形式输出字符常量的ASCII码)。