clang Data Type

clang Data Type

clang Data Type

C语言’\0’的含义

  • \0 是判定字符数组结束的标识
  • \0 表示的是ASCII控制字符中空字符的含义,代码为NUL,非NULL
  • \0 本身占一个位置
  • \0 在数组中占有空间但不显性

    NUL和NULL的区别

  • NUL 是ASCII 字符集中 ‘\0’ 字符的名字,它的字节模式为全 0。NULL 指一个其值为 0 的指针。它们都是整型值,其值也相同,所以它们可以互换使用。
  • 符号 NULL 在头文件 stdio.h 中定义。另一方面,并不存在预定义的符号 NUL。
  • NULL 指针并不指向任何对象。除非是用于赋值或比较运算,出于其他任何目的的使用NULL指针都是非法的。

NULL是一个宏,它在几个标准头文件中定义,0是一个整型常量,’\0’是一个字符常量,而NUL是一个字符常量的名字。术语都不可互换。

  • 1、NULL就是空指针
  • 2、0可以被用于任何地方,它是表示各种类型零值的符号并且编译器会挑出它
  • 3、’\0’应该只被用于结束字符串
  • 4、NUL没有被定义于C和C++,它不应该被使用,除非你自己定义它,像:#define nul ‘\0’

空指针的用法 :

  • 用空指针终止对递归数据结构的间接引用
  • 用空指针作函数调用失败时的返回值
  • 用空指针作警戒值

加减乘除运算

简写方式:

1
2
3
4
int a = 1, b = 2;
a += 1; // a = a + 1;
a *= (b-1); // a = a * (b-1);
a -= (a+2); // a = a - (a+2);

特殊简写(自加或自增: ++ 和 – 自增运算符和自减运算符)

1
2
3
4
5
// a = a + 1
a++;

// a = a + 1
++a;

前自增和后自增区别:

  • ++ 在前面叫做前自增
  • ++ 在后面叫做后自增
  • – 在前面叫做前自减
  • – 在后面叫做后自减
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int a = 1, b = 2;
    int a1 = ++a, b1 = b++;

    printf("a=%d, a1=%d\n", a, a1);

    // 注意事项:b1=b++,b 值先赋值 b1,然后再加 1。
    printf("b=%d, b1=%d\n", b, b1);

    //综合操作
    int a = 2, b = 1;
    int c = a - (b--); // 后自减,会先进行a-b运算,结果是 1,然后 b 再自减,就变成了 0;最后再将a-b的结果(也就是1)交给 c,所以 c 的值是 1。
    int d = (++a) - (--b); //b 的值已经变成 0。对于d=(++a)-(--b),a 会先自增,变成 3,然后 b 再自减,变成 -1,最后再计算3-(-1),结果是 4,交给 d,所以 d 最终是 4。
    printf("c=%d, d=%d\n", c, d);

注意事项:

1.C语言中的除法运算,类型注意事项:

  • **当除数和被除数都是整数时,运算结果也是整数;非整除则直接丢掉小数部分只保留整数部分,与小数赋值给整数类型同理。
  • 除数和被除数中如含有小数,那么运算结果也是小数,double 类型小数。

2.取余注意事项:

  • C语言中的取余运算 % 的两边都必须是整数,小数非法,否则编译器报错。
    余数可以是正数也可以是负数,由 % 左边的整数决定:
    如果 % 左边是正数,那么余数也是正数;如果 % 左边是负数,那么余数也是负数
Author

Jack Liu

Posted on

2022-05-05

Updated on

2024-02-17

Licensed under