1. 字符数组和字符指针的大小计算

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5. char s[15] = "0123456789";
  6. int a = strlen(s);//10
  7. int b = sizeof(s);//15
  8. char *s1 = "0123456789";
  9. int c = sizeof(s1);//8 64位系统下 指针大小为8
  10. int d = sizeof(*s1);//1 //*s1指向整个字符串 +1 是整个步长 int 步长4 char步长1
  11. int e = strlen(s1);//10 //指向字符串首地址 遍历一遍
  12. //d e 其实就是相当于 数组的首地址 数组的地址 是一致的
  13. /*a = 0x7ffdc453cbb0
  14. &a[0] = 0x7ffdc453cbb0
  15. &a+1 = 0x7ffdc453cbd8
  16. &a[0]+1 = 0x7ffdc453cbb4
  17. */
  18. printf("%d\n",a);
  19. printf("%d\n",b);
  20. printf("%d\n",c);
  21. printf("%d\n",d);
  22. printf("%d\n",e);
  23. }

image.png

2. 短路法则 c=a++ || ++b;

#include<stdio.h>
#include<string.h>
int main()
{
    int a,b,c;
    a=b=4;
    c=a++ || ++b;
    /* 先执行 a++ 4++
        a=4成立 || 短路法则 ++b不执行
        然后a = 5 b = 4 c = 1
    */
    printf("%d\n",a);//5
     printf("%d\n",b);//4
      printf("%d\n",c);//1
}

image.png

3. a+b == 0.3 float类型运算

#include<stdio.h>
#include<string.h>
int main()
{
   float a,b;
   a = 0.1;
   b = 0.2;
   if(a+b != 0.3)
   {
       printf("%f\n",a + b);//0.30000
   }

}

image.png

4.image.png