C primer plus 笔记

  1. 不同的计算机使用的编码集不一样,比较常用的是ASCII。标准ASCII码值范围从0-127.而char类型通常定义为8位。
  2. 令人惊奇的是,C将字符常量视为int类型而非char类型。例如在int类型为32位和char类型为8位的ASCII系统中,下列代码:
    char grade = 'B';
    意味着'B'作为一个数值66存储在一个32位单元中,而赋值后的grade则把66存储在一个8位单元中。利用字符常量的这个特性,可以定义一个字符常量'FATE',这将把4个独立的8位ASCII码存储在一个32位单元中。然而如果把这个字符常量赋值给一个char变量,那么只有最后8位会起作用,因此变量的值为'E'。
  3. size_t strlen(char const *string);
    if (strlen(x) >= strlen(y)) ...    1
    if (strlen(x) - strlen(y) >=0) ... 2
    请注意,size_t是一个无符号整数类型,但上面两条语句是不相等的。第一条语句将按照你设想的那样工作,但第二条语句的结果永远都是真的。strlen()的结果是个无符号整数,所以操作符>=左边的表达式将是无符号数,而无符号数是绝不可能是负的
原文地址:https://www.cnblogs.com/woainilsr/p/2691141.html