2012年5月30日星期三

从c++开始4

三、c++的处理数据
                命名规则 
c与c++的命名是随意性比较强的。名称中可以用数字digi、下划线underscore、大写字母等capital。但不能拿关键字keywords开玩笑,并且支持长字符。开始就用一个下划线或者两个underscores也合法,但是被实现reserved保留了,那就尽量避免触及到即可。

c++的整形integer
short ,int,long 是递增宽度width的无小数点部分并且有正负符号的类型。short就是 short int的简称并且可以单独使用。例如:short score; created a type short  integer variable创建了一个shor型的变量叫score。 int 、long同理。那么我们要用一个 include <limites>; 的头文件把一些对象召唤出来测量一下自己系统中不同整形的width宽度吧

// widthTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<climits>//预处理头文件被召唤 use limits.h for older systems
int main()
{
using namespace std;
int n_int=INT_MAX;//INT_MAX对象被召唤初始化变量
short n_short=SHRT_MAX;//SHRT_MAX对象被召唤初始化变量
long n_long=LONG_MAX;//LONG_MAX对象被召唤初始化变量

cout<<"short is "<<sizeof n_short<<endl;//操作符sizeof被召唤测量长度
cout<<"int is "<<sizeof n_int<<endl;//操作符sizeof被召唤测量长度
cout<<"long is "<<sizeof n_long<<endl;//操作符sizeof被召唤测量长度
cout<<endl;

cout<<"Maximum values:"<<endl;
cout<<"short:"<<n_short<<endl;
cout<<"int:"<<n_int<<endl;
cout<<"long:"<<n_long<<endl;
cout<<endl;

cout<<"Minimum int value ="<<INT_MIN<<endl;//直接使用INT_MIN对象
cout<<"Bits per byte ="<<CHAR_BIT<<endl;//直接使用CHAR_BIT对象

int m;//这个实现跟我没半毛钱关系
cin>>m;//这个实现跟我没半毛钱关系
}
如下就是实现内容:

short is 2
int is 4
long is 4

Maximum values:
short:32767
int:2147483647
long:2147483647

Minimum int value =-2147483648
Bits per byte =8

那个头文件#include<limits>; 有自己的一个成员对象list必须要在这里列述一下。但我就很反对必须二字,所以上网自己搜吧。一般必须的东西哪儿都能找到。

无符号类型,介绍过integer的三种类型 short、 int、 long 都是可以有正负符号的。有些数据是用不到负号的(人口),那么本来short是-32768 到 32767,则无符号表达就是0 到 65535,不信你数数看看跟有符号的short总数对不对?那么出现了另外一个关键字keywords:unsigned,是unsigned int 的缩写abb。例如:unsigned short n_short;就是定义了一无符号的变量n_short,他的值必须从0开始。
下面是根据 有符号short的取值范围从(-32768 到 32767),unsigned short的取值范围是(0 到 65535)的有趣例子。

#include "StdAfx.h"
#include <iostream>
#include <climits>
#define Zero 0//define是c的预处理命令在c++里一般用const。就是告诉编译器碰到ZERO就是0
int main()
{
using namespace std;
short sam = SHRT_MAX;//SHRT_MAX把有符号的short sam赋值32767
unsigned short sue = sam;//无符号的short,但是被变量sam赋值了,也是32767

cout<<"Sam has "<<sam<<" dollars and Sue has "<<sue;
cout<<" dollars deposited."<<endl<<"Add $1 to each one."<<endl<<"Now!";

sam=sam+1;//变成-32768了,明白什么叫否极泰来么?取值范围的原因只能轮回了。
sue=sue+1;//32767+1
cout<<"Sam has "<<sam<<" dollars and Sue has "<<sue;
cout<<" dollars deposited.\n Pool Sam!"<<endl;

sam=Zero;//归零 #define Zero 0
sue=Zero;//归零 #define Zero 0
cout<<"Sam has "<<sam<<" dollars and Sue has "<<sue;
cout<<" dollars deposited."<<endl;
cout<<"Take $1 from each one."<<endl<<"Now";

sam=sam-1;//有符号的 0-1就是-1
sue=sue-1;//没符号的就再次否极泰来是(0-1=65535)
cout<<"Sam has "<<sam<<" dollars and Sue has "<<sue;
cout<<" dollars deposited."<<endl<<"Luck Sue!"<<endl;

int m;//没半毛关系
cin>>m;//没半毛关系
}

 打印内容如下:

Sam has 32767 dollars and Sue has 32767 dollars deposited.

Add $1 to each one.
Now!Sam has -32768 dollars and Sue has 32768 dollars deposited.
 Pool Sam!
Sam has 0 dollars and Sue has 0 dollars deposited.
Take $1 from each one.
NowSam has -1 dollars and Sue has 65535 dollars deposited.
Luck Sue!

没有评论:

发表评论