CPP_6_内置的那些变量和数据运算

Urna Semper

张一极

201998

CPP_6_变量

类型

含义

最小存储空间

    

bool

    

boolean

NA

char

character

8 bits

wchar_t wide character

    

16 bits

short short integer

    

16 bits

int integer

    

16 bits

long long integer

    

32 bits

float single-precision floating-point

    

6 significant digits

double double-precision floating-point

    

10 significant digits

    

long double ,extended-precision floating-point

10 significant digi

c++的内置类型如上表:

整型:

小小改观 : 整数和字符还有布尔类型的算术类型,都是整型,而不只有整数,比较常见的字符类型是charwchar—tchar保证了长度不受干涉,有足够空间,wchar-t有兴趣的可以去了解,通常可以表示其余的字符如汉字等。

细节:

shortintlong类型都可以表示整数,储存空间大小不一而已,short一般为半个机器字节,int是他的两倍也就是一个机器字节,long又是int的两倍,两个机器字节(书中还提到了32位机器intlong的字节数目有趣的一致。)

布尔类型代表真和假,非零为真,0为假,除了他以外,整型也可以是无符号或者带符号的,有符号的整型可以表示正数也可以表示负数,无符号只能表示正数也就是大于等于0的数。

和其他整型不同,char 有三种不同的类型:plain char unsigned char signed char。虽然 char 有三种不同的类型,但只有两种表示方式。可以使用 unsigned char signed char 表示 char 类型。使用哪种 char 表示方式由 编译器而定。

整型值的表示

无符号型中,所有的位都表示数值。如果在某种机器中,定义一种类型使用 8 位表示,那么这种类型的 unsigned 型可以取值 0 255

C++ 标准并未定义 signed 类型如何用位来表示,而是由每个编译器自由决 定如何表示 signed 类型。这些表示方式会影响 signed 类型的取值范围。8 signed 类型的取值肯定至少是从 -127 127,但也有许多实现允许取值从 -128 127

表示 signed 整型类型最常见的策略是用其中一个位作为符号位。符号位为 1,值就为负数;符号位为 0,值就为 0 或正数。一个 signed 整型取值是从 -128 127

(引自c++ primer

变量初始化,我们一般采用声明的同时执行初始化:

int a = 3

大多数编辑器都不会允许赋值的值和类型不一样的情况。

但是有的编译器不会给出错误,只会给出警告甚至不给出警告,直接接受,但是最后得出的结果出乎我们的意料,c语言把字符看作小整数,c++继承了这个特性,而char类型需要的内存不用那么多,所以用char计算,更加方便快捷,但是为了阅读性能,很少有这么做的。

就像布尔类型的数据可以放在int中,把所有true转化为1,所有的false转化为0

反过来,int类型的数据转换为bool类型的数据时候,会把所有非零转化为true,但这也不是常用的,除非逼不得已在一些特殊业务场景下才不得不做这样的工作。

双精度的浮点型为double,单精度浮点型的数据为float,而我们一般使用float,在精度要求不高的情况下。

常量:

在一些业务场景中,常量可以用来表示不会改变的量,在程序的生命周期里,编译器不会允许你的改变常量的值:

#include

using namespace std;

void main(){

    const int a = 10;

    a = 11;

}

问题:

n.cpp:5:7: error: cannot assign to variable ‘a’ with const-qualified type

      ‘const int’

    a = 11;

    ~ ^

n.cpp:4:15: note: variable ‘a’ declared const here

    const int a = 10;

    ~~~~~~~~~~^~~~~~

2 errors generated.

自测题:

以下程序的输出是什么?

#include

using namespace std;

int main(){

    char a = ‘b’;

    char b =‘c’;

    char c = a;

    cout<<a<<b<<c<<‘c’;

}

  code g++ n.cpp -o n

  code ./n

bcbc%                                                                           

  code

编写一个可执行的程序,从键盘读取两个数据,第一个变量除以第二个变量,分别输出商部分和余数部分:

#include

using namespace std;

int main(){

    int a,b;

    cin>>a>>b;

    cout<<a/b<<a%b<<endl;

}

  code ./n

10

2

50

  code

这部分习题太简单就不再多说了,我们了解一些细节即可,自己实验一下就理解了。

ex6

 

此条目发表在ALL, CPP分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注