1. 程式人生 > >空暇時候思考2(''等價於數字0還是字符0)

空暇時候思考2(''等價於數字0還是字符0)

filename 一個 char compiler 結束 i++ 修改 class 字符

/**********************************************************************      
* *   Copyright (c)2015,WK Studios    
* *   Filename:  A.h  
* *   Compiler: GCC  vc 6.0     
* *   Author:WK      
* *   Time: 2015 6 7  
* **********************************************************************/  
#include<iostream>
using namespace std;
void main()
{
	char a[100]={‘0‘,48,48,0,0,‘0‘};
	char b[]={‘0‘,48,48,0,0,‘0‘};
	char c[]={‘0‘,‘0‘};
	char d[]={0};
	//註意一下數字0與字符‘0‘差別
	//‘\0‘等價於數字0而不是字符0
	cout<<sizeof(a)<<endl;
	cout<<strlen(a)<<endl;
	cout<<sizeof(b)<<endl;
	cout<<strlen(b)<<endl;
	cout<<sizeof(c)<<endl;
	cout<<strlen(c)<<endl;
	cout<<sizeof(d)<<endl;
	cout<<strlen(d)<<endl;

執行結果:

100

3

6

3

2

7

1

0

不行的話再看一個:

#include <iostream>
using namespace std;


void example()
{
	int i;
	char acNew[20];
	for(i = 0; i < 5; i++)
	{
		acNew[i] = ‘0‘ ;
	}
	printf("%d\n",strlen(acNew));
	return ;
}

void main()
{
	example();	
}
結果是一個隨機的值,由於strlen沒有找到結束的表示符‘\0’

略微修改一下:

#include <iostream>
using namespace std;


void example()
{
	int i;
	char acNew[20];
	for(i = 0; i < 5; i++)
	{
		acNew[i] = 0 ; // ‘\1‘  0
	}
	printf("%d\n",strlen(acNew));
	return ;
}

void main()
{
	example();	
}

這次結果是0


空暇時候思考2(&#39;\0&#39;等價於數字0還是字符0)