呜呜呜,C语言白学了.jpg

今天看C4P(C++ Primer Plus)才发现两个东西:

  1. define不是全文替换,而是单词替换;

假设有如下代码段:

#include ...
#define test "sss"
...
    char s[] = test;
    float tested = 1;
    printf("%s test\n", s);
...

输出是sss test而不是sss "sss"。(C++支持连续字符串自动拼接) (如果要验证define会不会替换变量名的话,得要至少两个文件才行)

  1. C语言的字符常量是按照int大小(通常是4Bytes)存储的。C++早期也是,后来才改成了和char一致的大小(按int存储的话会导致cout以数字形式输出字符常量的ASCII码)。

标签: none

添加新评论