2.一般情况下,我们会认为表示整数的数据类型叫做是整型,但实际上,C++中的整型包括表示整数、字符和布尔值的算术类型。理解这一点很简单,首先,整数就是通常指的整数,比如-655536,-200,-100,0,50,65535等;而字符char类型的数据也是可以参加算术运算的,比如,字符'a'等于整型97的,可通过if('a'==97) cout<<"Yes"<<endl;验证,程序输出是YES,表示字符'a'与整数97是相等的;布尔bool类型也是可以参与算术运算的,例如,char a = 'a';bool b = true;printf("%d\n",a+b);则输出的结果是98,表示a=97,b=1,而输出是(97+1)==98;因此,严格的来说,整型是表示整数、字符和布尔值等算术类型的合称。对于C++语言而言,整型就是包括整数型、字符型、布尔型。
布尔类型:用bool关键字来申明,其值只有真和假,即true和false,true的int类型值为1,false的int类型值为0。0值算术类型都代表着false,而任何非0值都代表着true。布尔类型通常正规的定义和初始化如,bool b = true,当然也可以定义和初始如bool b1=1,bool b2='b'等等;然而,假设有程序 bool b = 'b';cout<<b<<endl;printf("%c\n",b);则程序输出为1和@脸型符号@,为什么不是98或者true或者'b',这不仅说明了任何非0数值都是true,而且也证明了bool类型的true值就是1,所以,任何值为true的bool值输出总是为1,而将1作为字符输出时就是@脸型字符@。这个例子也证明了在本人发表的随笔《if语句,C、C++、Java》一文中提到的,if(“xxxx”)内的条件表达式是true的原因。
整型(除bool类型外)可以分为带符号signed和无符号unsigned类型。带符号类型signed可以表示正负数、0,而无符号数则只能表示0和正数。默认情况下是带符号数的,例如 int i;相当于signed int i; 而要定义无符号数必须显示在前面加上unsigned加以说明,例如,unsigned int i。然而,对于char类型,char类型可以有三种类型:普通char、signed char和unsigned char,即便如此,char类型只有两种表示方式,即signed char和unsigned char。