我爱我的家园!

成功在于你是否努力,希望在于你是否相信自己!

 

C++常量的表示

 C++常量的表示

 
    一、char型常量

    (一)单个字符:用单引号定界,如'a',C++转义字符如下:
        (01)\n        换行
        (02)\r        回车
        (03)\t        水平制表符
        (04)\v        垂直制表符
        (05)\b        退格
        (06)\a        振铃
        (07)\\        字符\
        (08)\'        字符'
        (09)\"        字符"
        (10)\...      1-3位八进制ASCII码代表的字符('\101')
        (11)\x.....   十六进制ASCII码代表的字符,位数约束不严格,在字符串表示某个字符时请慎
用之
        (12)\uxxxx    四位16进制数字
          或\Uxxxxxxxx八位16进制数字实现通用符号(Universal character name)
          注意,必须是四位或八位,位数少或多都会出错。
   
    (二)字符串,用双引号定界,如"Code::Blocks",注意字符串的长度与占用内存的大小,因字符串结 束标志为'\0',所以占用内存的大小比实际可用长度多1个字符。字符串结束标志不必特别指明, "abcdeabcde\0",特别指明反而会再多占用一个字节的内存空间。
#include <iostream>
#include <cstring>
   
using namespace std;
 
int main(int argc,char** argv) {
    char s[13]="abcdeabcde";
    char s1[]="abcdeabcde";
    char s2[]="abcdeabcde\0\0\0\0";
    cout<<sizeof(s)<<endl;
    cout<<strlen(s)<<endl;
    cout<<sizeof(s1)<<endl;
    cout<<strlen(s1)<<endl;
    cout<<sizeof(s2)<<endl;
    cout<<strlen(s2)<<endl;    
    return EXIT_SUCCESS;
}
//-----
结果为:
13
10
11
10
15
10
//-----
   
    (三)wchar_t型常量加前缀L,只能是大写L。如:
        wchar_t c=L'A';//这里的L可不加,看编译器是否认可
        wchar_t cc[]=L"mytest";//这里的L必须加
例:
#include <iostream>
using std::cout;
using std::endl;
int main(int argc,char** argv) {
    wchar_t c=L'A';
    char cc='A';
    wchar_t cp[]=L"mytest";
    char ccp[]="mytest1";
    cout<<c<<endl;
    cout<<(char)c<<endl;
    cout<<cc<<endl;
    cout<<cp<<endl;
    cout<<ccp<<endl;
    return EXIT_SUCCESS;
}
//-----
65
A
A
0x22ff60
mytest1
//-----
 
    二、整型常量

 
    (一)书写常量时,若不加任何修饰符,编译器通常会认为是int整型,但有时也会根据操作自动实现 合适的转换。
#include <iostream>
#include <climits>
using namespace std;
int main(int argc,char** argv) {
    cout<<INT_MAX<<endl;
    cout<<SHRT_MAX<<endl;
    short x=32768;
    short k=32767+1;
    long long y=2147483647;
    long long d=INT_MAX+1;
    cout<<x<<endl;
    cout<<k<<endl;
    cout<<y<<endl;
    cout<<d<<endl;
    return EXIT_SUCCESS;
}
//-----
2147483647
32767
-32768
-32768
2147483647
-2147483648
//-----
 
    (二)无符号整型后缀是U(u),long型后缀是L(l),long long型后缀是LL(ll),L或LL或以与U组合。

    三、浮点型常量

    默认是double类型,表示float类型常量加后缀F(f),表示long double类型常量加后缀L(l)。
 
    四、布尔型常量只有true和false,只认小写。当然可以用常数来表示,0为假,非零为真。
 
bool x=false;
bool y=1.234;
cout<<x<<endl;
cout.setf(ios_base::boolalpha);
cout<<y<<endl;
//-----
0
true
//-----
 
例1:只有一个函数,但调用时参数不同,编译器尽量匹配
#include <iostream>
using namespace std;
void show(long);
int main(int argc,char** argv) {
    show(123);
    show(123L);
    show(123UL);
}
void show(long demo) {
    cout<<"long"<<endl;
}
//-----
long
long
long
//-----
例2:有多个函数,编译器会认为是人为设计函数重载,将不再自动匹配
#include <iostream>
using namespace std;
void show(int);
void show(long);
void show(unsigned long);
int main(int argc,char** argv) {
    show(123);
    show(123L);
    show(123UL);//改为show(123LL)试试如何?将会出错。
}
void show(int demo) {
    cout<<"int"<<endl;
}
void show(long demo) {
    cout<<"long"<<endl;
}
void show(unsigned long demo) {
    cout<<"unsigned long"<<endl;
}
//-----
int
long
unsigned long
//-----

posted on 2008-09-05 22:24 死神 阅读(1288) 评论(0)  编辑  收藏 所属分类: C/C++


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

欢迎大家来到我的个人世界!

常用链接

留言簿(3)

随笔分类(5)

随笔档案(9)

文章分类(37)

文章档案(41)

相册

语音技术

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜