可能很多人不知道現在C語言已經有了布爾類型:從C99標准開始,類型名字為"_Bool"
在C99標准之前我們常常自己模仿定義布爾類型,常見有以下幾種方式:
1、方式一
#define TURE 1 #define FALSE 0
2、方式二
typedef enum {false, true} bool;
3、方式三
typedef int bool
閒int浪費內存,對內存敏感的程序使用
typedef char bool
C99標准中新增的頭文件中引入了bool類型,與C++中的bool兼容。該頭文件為stdbool.h,其源碼如下所示:
#ifndef _STDBOOL_H #define _STDBOOL_H #ifndef __cplusplus #define bool _Bool #define true 1 #define false 0 #else /* __cplusplus */ /* Supportingin C++ is a GCC extension. */ #define _Bool bool #define bool bool #define false false #define true true #endif /* __cplusplus */ /* Signal that all the definitions are present. */ #define __bool_true_false_are_defined 1#endif /* stdbool.h */
continue細節就是要在循環中使用,不然會報錯
#includeint main() { int a = 1; switch(a) { case 1: printf("1\n"); continue; // continue必須用在循環中 break; case 2: printf("2\n"); default: break; } return 0; }
#include輸出:int b[100]; void fun(int b[100]) { printf("in fun sizeof(b) = %d\n",sizeof(b)); //感覺函數中數組按指針處理的 } int main() { char *p = NULL; printf("sizeof(p) = %d\n",sizeof(p)); printf("sizeof(*p) = %d\n",sizeof(*p)); printf("-----------------------\n"); char a[100]; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(a[100]) = %d\n",sizeof(a[100])); printf("sizeof(&a) = %d\n",sizeof(&a)); printf("sizeof(&a[0]) = %d\n",sizeof(&a[0])); printf("-----------------------\n"); fun(b); return 0; }
#include輸出:#include #include #include /* 問題 1、-0和+0在內存中分別怎麼存儲 2、int i = -20; unsigned j = 10; i+j的值為多少?為什麼? 3、 下面代碼有什麼問題? unsigned i; for(i = 9; i>=0; i--) { printf("%u\n",i); } */ int main() { bool bool2 = 0; /* C語言bool類型是在C99才有的,如果沒有包含頭文件stdbool.h,直接用bool會報錯誤*/ _Bool bool1 = 1; /*直接使用_Bool不用包含stdbool.h*/ char a[280]; char *str = "12340987\0 56"; char test[] = "12340987 56"; int i; printf("strlen(a) = %d\n",strlen(a)); for(i = 0; i < 280; i++) { a[i] = -1-i; // a[256] = 0 // printf("a[%d] = %d\n",i,a[i]); } printf("strlen(a) = %d\n",strlen(a)); // 為什麼是255 printf("strlen(str) = %d\n",strlen(str)); printf("strlen(test) = %d\n",strlen(test)); char s = '\0'; printf("\\0 = %d\n",s); return 0; }