程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 程序猿之---C語言細節26(C語言中布爾類型、continue細節、sizeof舉例、strlen舉例)

程序猿之---C語言細節26(C語言中布爾類型、continue細節、sizeof舉例、strlen舉例)

編輯:關於C語言

程序猿之---C語言細節26(C語言中布爾類型、continue細節、sizeof舉例、strlen舉例)


主要內容:C語言中布爾類型、continue細節、sizeof舉例、strlen舉例

一、布爾類型

可能很多人不知道現在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 */ 
 
/* Supporting  in 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

continue細節就是要在循環中使用,不然會報錯

#include 

int main()
{
	int a = 1;
	switch(a)
	{
		case 1:
			printf("1\n");
	 		continue; // continue必須用在循環中 
	 		break;
		case 2:
			printf("2\n");
		default:
			break;
	}
	return 0;
}

三、sizeof舉例

#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;
}
輸出:

\

四、strlen舉例

#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;
}
輸出:


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved