影者东升 发表于 2021-7-5 21:58:11

c语言_Day7_07-05

c语言_Day7_07-05

1、复习

  1、strlen 与 sizeof

  strlen函数返回字符串从开始至'\0'前的字符个数
  sizeof返回数据存储的字节数
  结论:当有结束标识'\0'时,strlen返回值比sizeof少1('\0'也占1字节),当无结束标识时,strlen会继续在栈上读取,直到出现结束标识。
int main()
{
    char arr[] = { 'a', 'b', 'c' };
    printf("size: %d\n", sizeof arr);    // 3
    printf("length: %d\n", strlen(arr));    // 15
    printf("%s\n", arr);   

    return 0;
}2、#define宏定义与数组创建

define宏定义可定义真正的常量(而非const定义的常变量),其体现在可将定义的整形常量带入至数组向内存申请空间所用的中括号中,不会报错。

#define NUM 5
int main()
{
    int i = 0;
    int arr = { 1, 2, 3, 4, 5 };
    int size = sizeof arr / sizeof(int);
    printf("size: %d\n", size);
    while (i < size)
    {
      printf("%d\n", arr);
      i++;
    }

    return 0;
}
2、操作符

  1、单目操作符


[*]~:按位(2进制位)取反
int main()
{
    int a = 0;
    int b = ~a;
    printf("%d\n", b);

    return 0;
}*补充:原码、反码、补码*  ​    负数存储时为二进制补码,printf输出为原码对应的十进制数,故中间存在补码 -> 原码的转换,具体方式如下:
  补码-1得到反码,反码符号位不变其他位取反得原码;原码 -> 补码途径相反。
  例:
  0(十进制)->
  00000000000000000000000000000000(二进制原码)->
  11111111111111111111111111111111(二进制按位取反)->
  11111111111111111111111111111110(二进制反码)->
  10000000000000000000000000000001(二进制原码)->
  -1(十进制结果)

[*]++ / -- :自增自减
  a++:后置++,先赋值再运算;
  ++a:前置++,先运算后赋值;
  自减同理
int main()
{
    int a = 10;
    int b = a++;
    int c = 20;
    int d = ++c;
    printf("a = %d b = %d\n", a, b);
    printf("c = %d d = %d\n", c, d);

    return 0;
}

[*]强制类型转换:当类型较小的数据存储类型较大的数据时,c编译器会警告精度丢失(仍编译通过),可使用(数据类型)强制类型转换。
  2、关系操作符


  \> 、>=、!=、
页: [1]
查看完整版本: c语言_Day7_07-05