请问C++中 10e-2字淘宝面值是什么默认是什么数据类型呢

&&/&&&&/&&&&/&&
C 语言包含的数据类型如下图所示:
一、数据类型与&模子&
short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。
怎么去理解它们呢? 举个例子:见过藕煤球的那个东西吧?(没见过?煤球总见过吧)。那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了。半径12cm,12 个孔。不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样。这个藕煤器其实就是个模子。
现在我们联想一下,short、int、long、char、float、double 这六个东东是不是很像不同类型的藕煤器啊?拿着它们在内存上咔咔咔,不同大小的内存就分配好了,当然别忘了给它们取个好听的名字。
在32 位的系统上short 咔出来的内存大小是2 个byte;
int 咔出来的内存大小是4 个byte;
long 咔出来的内存大小是4 个byte;
float 咔出来的内存大小是4 个byte;
double 咔出来的内存大小是8 个byte;
char 咔出来的内存大小是1 个byte。
(注意这里指一般情况,可能不同的平台还会有所不同,具体平台可以用sizeof 关键字测试一下)
很简单吧?咔咔咔很爽吧?是很简单,也确实很爽,但问题就是你咔出来这么多内存块,你总不能给他取名字叫做x1,x2,x3,x4,x5&或者长江1 号,长江2 号&吧。它们长得这么像(不是你家的老大,老二,老三&),过一阵子你就会忘了到底哪个名字和哪个内存块匹配了(到底谁嫁给谁了啊?^_^)。所以呢,给他们取一个好的名字绝对重要。下面我们就来研究研究取什么样的名字好。
二、变量的命名规则
1、命名应当直观且可以拼读,可望文知意,便于记忆和阅读。
标识符最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确。
2、命名的长度应当符合&min-length && max-information&原则。
C 是一种简洁的语言, 命名也应该是简洁的。例如变量名MaxVal 就比MaxValueUntilOverflow 好用。标识符的长度一般不要过长,较长的单词可通过去掉&元音&形成缩写。
另外,英文词尽量不缩写,特别是非常用专业名词,如果有缩写,在同一系统中对同一单词必须使用相同的表示法,并且注明其意思。
3、当标识符由多个词组成时,每个词的第一个字母大写,其余全部小写。比如:
& &int CurrentVal;
这样的名字看起来比较清晰,远比一长串字符好得多。
4、尽量避免名字中出现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号。比如驱动开发时为管脚命名,非编号名字反而不好。
初学者总是喜欢用带编号的变量名或函数名,这样子看上去很简单方便,但其实是一颗颗定时炸弹。这个习惯初学者一定要改过来。
5、对在多个文件之间共同使用的全局变量或函数要加范围限定符(建议使用模块名(缩写)作为范围限定符)。
(GUI_ ,etc)标识符的命名规则:
6、标识符名分为两部分:规范标识符前缀(后缀) + 含义标识。非全局变量可以不用使用范围限定符前缀。
7、作用域前缀命名规则。
8、数据类型前缀命名规则。
9、含义标识命名规则,变量命名使用名词性词组,函数命名使用动词性词组。例如:
变量含义标识符构成:目标词+ 动词(的过去分词)+ [状语] + [目的地];
函数含义标识符构成:动词(一般现时)+目标词+[状语]+[目的地];
10、程序中不得出现仅靠大小写区分的相似的标识符。例如:
& &int x, X; 变量x 与X 容易混淆
& &void foo(int x); 函数foo 与FOO 容易混淆
& &void FOO(float x);
这里还有一个要特别注意的就是1(数字1)和l(小写字母l)之间,0(数字0)和o(小写字母o)之间的区别。这两对真是很难区分的,我曾经的一个同事就被这个问题折腾了一次。
11、一个函数名禁止被用于其它之处。例如:
#include &c_standards.h&
void foo(int p_1)
& &int x = p_1;
void static_p(void)
& &int foo = 1u;
12、所有宏定义、枚举常数、只读变量全用大写字母命名,用下划线分割单词。例如:
const int MAX_LENGTH = 100; //这不是常量,而是一个只读变量,具体请往后看
& &#define FILE_PATH &/usr/tmp&
13、考虑到习惯性问题,局部变量中可采用通用的命名方式,仅限于n、i、j 等作为循环变量使用。
一定不要写出如下这样的代码:
一般来说习惯上用n,m,i,j,k 等表示int 类型的变量;c,ch 等表示字符类型变量;a 等表示数组;p 等表示指针。当然这仅仅是一般习惯,除了i,j,k 等可以用来表示循环变量外,别的字符变量名尽量不要使用。
14、定义变量的同时千万千万别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据。这个问题在内存管理那章有非常详细的讨论,请参看。
15、不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展。
微信公众号:
各位粉丝,大家好,我是C语言中文网的站长(可以了解我),C语言中文网已经开通了微信公众号,名字是「码农宿舍」(不是C语言中文网哦),我将在这里和大家交流编程知识以及工作经验。大家可以搜索名字「码农宿舍」关注,也可以用微信扫描右边的二维码关注。
当你决定关注「码农宿舍」,你已然超越了99%的程序员!
推荐文章 TOP10The New C++ -- 基本数据类型和字面值常量 (8. 字符串字面值常量)
顾名思义,字符串就是将字符串起来。如果你已经理解了字符型和字符字面值常量,那么字符串字面值常量就不难理解了。字符字面值常量是由单引号将一个字符引起来,而字符串字面值常量是由双引号将一些字符引起来。字符串里的特殊字符的例如转义字符(除了单引号和双引号转义字符),八进制转义字符,十六进制转义字符,\u和\U所表达的意义和字符字面值常量都是一样的。
C++在所有的字符串后面多加上一个字符 '\0',表示字符串的结束。例如&abcd&这个字符串是由5个char类型字符组成:'a','b','c','d'和 '\0'。字符串前面可以加前缀u,U或者L分别表示这个字符串由char,char16_t,char32_t和wchar_t类型的字符组成。例如u&abcd&由5个char16_t的字符组成:u'a',u'b',u'c',u'd'和u'\0'。
虽然我们前面说过,当Unicode转义字符\U用在char16_t类型的字符字面值常量中时,不能超过0xFFFF的范围,但是用在char16_t类型的字符串字面值常量中时,可以超过0xFFFF(但不能超过0x10FFFF),这时他表示两个char16_t的字符,编译器会自动转换。例如u&abc\U&表示6个char16_t的字符,他等值于u&abc\uD815\uDE78&。其中0xD815 0xDE78是Unicode码点0x15678的UTF-16编码。同理,当十六进制转义字符和\u以及\U用在L位前缀的字符串字面值常量的时候,编译器会自动将他们转化位执行字符集的编码(如Visual C++转为UTF-16,GCC转为UTF-32)。
C++中还定义了UTF-8编码的字符串字面值常量,前缀是u8,例如u8&abcd&。里面的每个字符类型为char。你也许注意到了普通的没有前缀的字符串字面值常量和u8为前缀的字符串字面值常量都是由char类型的字符组成的,但u8有特殊意图,表示字符串采用Unicode中的UTF-8编码。而没有前缀的字符串在几乎所有的现代编译器中都采用ASCII编码。
当\u或者\U用于u8为前缀的字面值常量中时,分别代表2-4个字符,编译器会自动转换。例如,u8&abc\U&表示8个char的字符,他等值于u&abc\xF0\x95\x99\xB8&,其中0xF0 0x95 0x99 0xB8是Unicode码点0x15678的UTF-8编码。你也许有疑问为什么没有表达UTF-8的字符类型,那是因为表达UTF-8的字符类型只能表达0x00到0x7F之间的码点(超过就要至少2个字符才能表达),并且这和ASCII在同一个范围(0x00-0x7F)表达的字符是一样的,所以char就足够了,再多一个类型是没有必要的。
当相邻的两个字符串字面值常量之间只有零个或多个空格,制表符,或者换行之类的字符的时候,这些字符串常量将会被连接成一个字符串字面值常量,例如,&abc& &def& &123&
将被连接成为一个字符串字面值常量&abcdef123&。
当两个有前缀的字符串字面值常量被连接时,如果都没有前缀,则结果也没有前缀;如果前缀相同,则结果也是那个前缀;如果一个有前缀,另一个没有前缀,结果是有前缀的那个前缀。其他的情况都是未定义的(注脚:未定义行为(undefined-behavior)是C++中最令人头疼的最邪恶的现象。为了让不同的编译器进行优化,为了让编译器的实现简单一些,C++规定了各种未定义行为。当你的程序中涉及到了未定义行为,该程序的运行结果在C++的标准中是未定义的,一个未定义运行结果的程序也是无用的。)。例如,u&a& &b&和&a& u&b&都会被连接成u&ab&。
在屏幕输出『我是C++程序员』。
当字符串字面值常量里面有很多转义字符的时候,就会很容易出错。例如一个正则表达式可以写成,
&('(?:[^\\\\']|\\\\.)*'|\&(?:[^\\\\\&]|\\\\.)*\&)|&
你甚至可以不用知道正则表达式是什么,你也绝不会怀疑,这样写是很容易犯错,也很难除错的。C++支持原生字符串(raw string)的表达。原生字符串里面可以直接用反斜线\,单引号',双引号&之类的特殊字符,而不需要用(也无法用)他们的转义字符。原生表达式的语法是,
R&delimiter-string(raw-string)delimiter-string&
其中raw-string表示真正想表达的字符串字面值常量,R是前缀表示原生字符串,而delimiter-string表示任何长度小于16的字母或者数字组成的字符串(长度可能是0)(注脚:不包括 括号,(),反斜线\,制表符等等的特殊字符。)。前一个delimiter-string和后一个delimiter-string必须相同,这样delimiter-string(表示原生字符串的开始,)delimiter-string表示原生字符串的结束。
用例子最好解释,R&(raw-string)&,R&[(raw-string)]&,R&abc(raw-string)abc&,R&@@(raw-string)@@&都表示原生字符串字面值常量。delimiter-string的选择要保证raw-string里面不含有&)delimiter-string&这样的字眼,否则程序会报错。上面那个正则表达是的例子用原生字符串可以写成,
R&zzz(('(?:[^\\']|\\.)*'|&(?:[^\\&]|\\.)*&)|\)zzz&
原生字符串里可以直接写出单引号,双引号,反斜线,换行符,制表符,也可以使用左括号(和右括号),不需要任何转义字符。事实上,也写不出转义字符。例如下面这行程序,
std::cout && R&(abc\tdef\n)& && std::
他的输出是,
abc\tdef\n
原生字符串字面值常量同样适用于前缀为u8,u,U和L的字符串,例如LR&(abc)&。但要注意的一点是,八进制转义字符,十六进制转义字符,Unicode转义字符\u和\U,都无法在原生字符串中表达原有的意思。
小知识:Visual C++中&你好&也可以当成普通的char类型的字符串字面值常量用,而不是宽字符串字面值常量。&你好&在这里会被转换为4个字节的GB2312编码(和编辑器的设置有关)。但如果是宽字符串字面值常量例如L&你好&或者u&你好&,Visual C++会将这两个字转换为Unicode编码。
& 2012 - 2014 &
&All Rights Reserved. &类型是C++程序设计的基础
每种类型都定义了其存储空间要求和可以在该类型的所有对象上执行的操作.C++提供了一组基本内置类型,如int,char等.这些类型与它们在机器硬件上的表示方式密切相关.
类型可以分为const和非 const对象必须要初始化,且其值不能被修改.另外,我们还可以定义复合类型, 如引用. 引用为对象提供了另一个名字.复合类型是用其他类型定义的类.
C++语言支持通过定义类来自定义类型. 标准库使用类设施来提供一组高级的抽象概念, 如IO和string类型.
C++是一宗静态类型语言:变量和函数在使用前必须声明。变量可以声明多次但是只能定义一次。定义变量时候就进行初始化几乎总是个好主意
1. 基本内置类型
最小存储空间
单精度浮点型
6位有效数字
双精度浮点型
10位有效数字
long doble
扩展精度浮点型
10位有效数字
因为位数不同,这些类型所能表示的最大(最小)值也因机器的不同而有所不同。
让存储具有结构的最基本方法是用块(chunk)处理存储。通常将8位的块作为一个字节,4个字节(32位)作为一个&字&(word)。
带符号signed和无符号unsigned类型
unsigned int 类型可以简化写成unsigned,也就是说,unsigned后面不加其他类型说明符就意味着是:unsigned int。
符号位为1,值就为负数;符号位为0,值就为0或正数。
对于unsigned类型来说,负数总是超过其取值范围。unsigned类型的对象可能永远不会保存负数。但在C++中,把负数赋值给unsigned对象是完全合法的,其结果是该负数对该类型的取值个数求模后的值。
& & & & &&&例如:把-1赋值给8位的unsigned char,那么结果是255
& & & & & & & & & & 由于-1的补码是(原码绝对值取反加一)结果就是255的二进制编码。
& & & & & &
浮点型,类型float,double和long double分别表示单精度浮点数,双精度浮点数和扩展精度浮点数。
一般float类型用一个字(32位)来表示,double类型用两个字(64位)来表示,long double 类型用三个或四个字(96位或128位)来表示。
对于实际程序来说float类型的精度通常是不够的&&float只能保证6位有效数字,而double型至少可以保证10位有效数字,能满足大多数计算的需要。
2. 字面值常量
42这样的值在程序中就被当做字面值常量。字面值是指只能用它的值来称呼它,常量是指它的值不能修改。只有内置类型存在字面量,没有类类型的字面量,因此也没有任何标准库类型的字面量。
整型字面值规则:
20 & & & & //十进制
024 & & & //八进制
0x14 & & //十六进制
字面值整数常量的默认类型是int或long类型。其精度类型决定于字面值&&其值适合int就是int类型,适合long就是long类型。也可以通过增加后缀,强制将字面值整数常量转换为long,unsigned或unsigned long类型。
通过在数值后面加L或者l制定常量为long类型(推荐使用大写L,因为小写l容易和1混淆)
类似,可以通过在数值后面加U或u定义unsigned类型。同时加L和U就能够得到unsigned long类型的字面值常量(后缀之间没有空格)。
& & & &&例子:128U & /*unsigned*/ & & & 1024UL & /*unsigned long*/
& & & & & & & & &1L & & & /*long*/ & & & & & & &8Lu & & & /*unsigned long*/
没有short类型的字面值常量。
浮点字面值规则:
默认的浮点字面值常量位double类型。
在数值后面加上F或者f表示单精度;加上L或l表示扩展精度。
例子:3.14159F & & &12.345L & & 1.2345E1L
布尔字面值和字符字面值:
可打印的字符型字面值通常用一对单引号来定义:
& & & & & &&'a' & &'2' & ',' & &' '&//blank
在字符字面值的前面加L就可以得到wchar_t类型的宽字符字面值。
"wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式,wchar_t类型主要用在国际化程序的实现中,但它不等同于unicode编码。unicode编码的字符一般以wchar_t类型存储。char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。
wchar_t数据类型一般为16位或32位,但不同的C或C++库有不同的规定,如GNU Libc规定wchar_t为32位,总之,wchar_t所能表示的字符数远超char型。
标准C++中的wprintf()函数以及iostream类库中的类和对象能提供wchar_t宽字符类型的相关操作。"
非打印字符的转义序列 :
水平制表符
纵向制表符
报警(响铃)符
我们可以将任何的字符表示为一下形式的通用转义字符:
\ooo & 这里的ooo表示3个八进制的数字,这三个数字表示字符的数字值。& & & & & & & & & &&
同样也可以用十六进制转义字符来定义字符:\xddd & 由反斜线,一个x和一个或多个十六进制数字组成。
字符串字面值:
字符串字面值常量用双引号括起来的0个或多个字符表示。
C++兼容C,所有字符串字面值都由编译器自动在末尾添加一个空字符。
同样也存在宽字符串字面值,一样在前面加L。如:L"a wide string literal".
宽字符串字面量是一串常量宽字符,同样以一个宽空字符结束。
t&&"Hi"&&st\
std::cout&&"Hi"&&std::
利用这个特性可以编写长字符串字面值:
std::cout&&"a multi-line\
string literal\
using a backslash"
左值&(lvalue,发音为ell-vallue)左值可以出现在赋值语句的左边或右边
右值&(rvalue,发音为are-valle)右值只能出现在赋值的右边
变量时左值,因此可以出现在赋值语句的左边
数字字面值是右值,因此不能被赋值。
变量命名习惯:
变量名一般用小写字母。
区别初始化和赋值:初始化指创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替;
可以通过一个计数器和一个字符初始化string对象。这样创建的对象包含重复多次的指定字符,重复次数由计数器指定:
& & & & & & std::string all_nines(10,'9'); & &//all_nines=""
& & & & & & 初始化all_nines的唯一方法就是直接初始化。
初始化规则
系统会根据变量的类型和变量定义的位置自动帮我们初始化。
内置类型变量的初始化:
内置类型变量是否自动初始化取决于变量定义的位置。在函数体外部定义的变量都初始化成0
函数体内定义的内置类型变量不进行自动初始化。
类类型变量的初始化:
类通过定义一个或多个构造函数来控制类对象的初始化。
如果定义某个类的变量时没有提供初始化式,那么就会使用默认构造函数,无论变量在哪里定义,默认构造函数都会被使用。
std:: & & &// empty& empty=" "
声明和定义
任何在多个文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。
4. const限定符
定义const对象
const限定符将一个对象转换成一个常量。
const int bufSize=512; & & & // input&buffer size
定义bufSize为常量并初始化为512,任何修改bufSize的尝试都会导致编译失败;
因为常量在定义后就不能被修改了,所以在定义的时候就必须进行初始化。
const对象默认为文件的局部变量
与其他变量不同,在全局作用域中声明的const变量是定义该对象的文件的局部变量。就是说,此变量只存在于那个文件中,不能被其他文件访问。
但是可以通过制定const变量为extern,就可以在整个程序中访问const对象;
非const变量默认为extern,要使const变量能够在其他的文件中访问,必须显式地制定它为extern。
引用就是对象的另一个名字,引用主要用做函数的形参。
引用是一种复合类型,通过在变量名前添加&&&符号来定义,
引用必须使用与该类型的对象初始化:
int iva1=1024;
int &refVa1= & & & & & & // ok,& refVa1 refers to iva1
int &refVal12; & & & & & & & & // error, &a reference must be initialized
int &refVa13=10; & & & & & &// error, &initializer must be an object
初始化是指明引用指向哪个对象的唯一方法;
引用只是一个对象的另一个名字;
当引用初始化后,只要该引用存在,它就保持绑定到初始化时指向的对象,不能将引用绑定到另一个对象。
const引用是指向const对象的引用。可以读取但不能修改。
6.typedef名字
typedef可以用来定义类型的同义词;
typedef定义以关键字typedef开头,后面是数据类型和标示符。
typedef double wages;// wages is a synonym for&double
wages hourly=12.45; & &// double hourly=12.45
我们经常需要为某些属性定义一组可以可选择的值。枚举不仅提供了一种方法定义了整数常量集,而且还把它们聚集成组;
定义和初始化:
enum point{point1,point2,point3}; & & & & & & & &// point1=0; &point2=1; point3=2;
enum point{point1=1,point2,point3};&& & & & & & & &// point1=1; &point2=2; point3=3;
enum point{point1=1,point2,point3=5,point4,point5};&&& & & & & & & &// point1=1; &point2=2; point3=5;&point4=6; point5=7;
不能改变枚举成员的值。枚举成员本身就是一个常量表达式,所以也可用于需要常量表达式的任何地方。
每个类都定义了一个接口和一个实现。
定义类时,通常先定义该类的接口,即该类所提供的操作。通过这些操作,可以决定该类完成其功能所需要的数据,以及是否需要定义一些函数来支持这个类的实现。
定义Sales_item类
class&Sales_item{
& & public:
& & & & & //operations&onSales_item objects will go here
& & private:
& & & & &std::
& & & & &unsigned units_
最后的分号不能掉!
类的数据成员(橙色部分)
当定义数据成员时,只能指定该数据成员的名字和类型。
不能在类定义里定义数据成员的时候 &初始化数据成员,而是通过构造函数的特殊成员函数控制初始化。
public部分定义的成员在程序的任何部分都可以访问。
private部分定义的成员,不是类的组成部分的代码不能访问。
使用struct关键字定义类类型。(struct是从C语言中继承过来的)
如果使用class关键字来定义类,那么定义在第一个访问标号前的任何成员都隐式指定为
如果使用struct关键字来定义类,那么这些成员都是public
使用class还是struct关键字来定义类,仅仅影响默认的初始访问级别。
9.编写自己的头文件
头文件的正确使用能够带来2个好处:保证所有文件使用给定尸体的同一声明;当声明需要修改时,只有头文件需要更新;
头文件用于声明而不是用于定义;
一些const对象定义在头文件中
#include设施是C++预处理器的一部分,预处理器处理程序的源代码,在编译器之前运行。
#include指示只接受一个参数:头文件名。
为了避免名字冲突,预处理器变量用全大写字母表示
预处理器变量有两种状态:已定义和未定义;
#define 指示接受一个名字并定义该名字为预处理器变量; &#ifndef 指示检测指示的预处理器变量是否未定义,如果预处理器变量未定义,那么跟在后面的所有指示都被处理,直到出现#
#ifndef SALESITEM_H
#define SALESITEM_H
//使用这些设施来预防多次包含同一头文件
#include指示接受以下两种形式:
#include &standard_header&
#include "my_file.h"
如果头文件名包括在尖括号&&里,那么认为该头文件是标准头文件。编译器将会在预定义的位置集查找该头文件。
如果头文件名包括在一对引号中,那么认为它是非系统文件,查找通常开始于源文件的所在路径。
阅读(...) 评论()}

我要回帖

更多关于 邮票面值是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信