空暇時候思考2(' '等價於數字0還是字符0)
阿新 • • 發佈:2017-05-14
filename 一個 char compiler 結束 i++ 修改 class 字符
這次結果是0
/********************************************************************** * * 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('\0'等價於數字0還是字符0)