C++ 修饰符类型556567
C++ 修饰符类型
C++ 允许在 char、int 和 double 数据类型前放置修饰符。
修饰符是用于改变变量类型的行为的关键字,它更能满足各种情境的需求。
下面列出了数据类型修饰符:
-
signed:表示变量可以存储负数。对于整型变量来说,signed 可以省略,因为整型变量默认为有符号类型。
-
unsigned:表示变量不能存储负数。对于整型变量来说,unsigned 可以将变量范围扩大一倍。
-
short:表示变量的范围比 int 更小。short int 可以缩写为 short。
-
long:表示变量的范围比 int 更大。long int 可以缩写为 long。
-
long long:表示变量的范围比 long 更大。C++11 中新增的数据类型修饰符。
-
float:表示单精度浮点数。
-
double:表示双精度浮点数。
-
bool:表示布尔类型,只有 true 和 false 两个值。
-
char:表示字符类型。
-
wchar_t:表示宽字符类型,可以存储 Unicode 字符。
修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。
这些修饰符也可以组合使用,修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int。
C++ 允许使用速记符号来声明无符号短整数或无符号长整数。您可以不写 int,只写单词 unsigned、short 或 long,int 是隐含的。例如,下面的两个语句都声明了无符号整型变量。
signed int num1 = -10; // 定义有符号整型变量 num1,初始值为 -10 unsigned int num2 = 20; // 定义无符号整型变量 num2,初始值为 20 short int num1 = 10; // 定义短整型变量 num1,初始值为 10 long int num2 = 100000; // 定义长整型变量 num2,初始值为 100000 long long int num1 = 10000000000; // 定义长长整型变量 num1,初始值为 10000000000 float num1 = 3.14f; // 定义单精度浮点数变量 num1,初始值为 3.14 double num2 = 2.71828; // 定义双精度浮点数变量 num2,初始值为 2.71828 bool flag = true; // 定义布尔类型变量 flag,初始值为 true char ch1 = 'a'; // 定义字符类型变量 ch1,初始值为 'a' wchar_t ch2 = L'你'; // 定义宽字符类型变量 ch2,初始值为 '你'
为了理解 C++ 解释有符号整数和无符号整数修饰符之间的差别,我们来运行一下下面这个短程序:
https://avg.163.com/topic/detail/10167713
https://avg.163.com/topic/detail/10167714
https://avg.163.com/topic/detail/10167452
https://avg.163.com/topic/detail/10167712
https://avg.163.com/topic/detail/10167708
https://avg.163.com/topic/detail/10167431
https://avg.163.com/topic/detail/10167382
https://avg.163.com/topic/detail/10167652
https://avg.163.com/topic/detail/10167651
https://avg.163.com/topic/detail/10167650
https://avg.163.com/topic/detail/10167606
https://avg.163.com/topic/detail/10167590
https://avg.163.com/topic/detail/10167586
https://avg.163.com/topic/detail/10167585
https://avg.163.com/topic/detail/10167582
https://avg.163.com/topic/detail/10167519
https://avg.163.com/topic/detail/10167518
https://avg.163.com/topic/detail/10167517
https://avg.163.com/topic/detail/10167516
https://avg.163.com/topic/detail/10167406
https://avg.163.com/topic/detail/10167515
https://avg.163.com/topic/detail/10167429
https://avg.163.com/topic/detail/10167513
https://avg.163.com/topic/detail/10167512
https://avg.163.com/topic/detail/10167511
https://avg.163.com/topic/detail/10167509
https://avg.163.com/topic/detail/10167508
https://avg.163.com/topic/detail/10167507
https://avg.163.com/topic/detail/10167506
https://avg.163.com/topic/detail/10167505
https://avg.163.com/topic/detail/10167503
https://avg.163.com/topic/detail/10167447
https://avg.163.com/topic/detail/10167504
https://avg.163.com/topic/detail/10167502
https://avg.163.com/topic/detail/10167501
https://avg.163.com/topic/detail/10167500
https://avg.163.com/topic/detail/10167342
https://avg.163.com/topic/detail/10167499
https://avg.163.com/topic/detail/10167389
https://avg.163.com/topic/detail/10167498
https://avg.163.com/topic/detail/10167497
https://avg.163.com/topic/detail/10167496
https://avg.163.com/topic/detail/10167495
https://avg.163.com/topic/detail/10167491
https://avg.163.com/topic/detail/10167493
https://avg.163.com/topic/detail/10167492
https://avg.163.com/topic/detail/10167490
https://avg.163.com/topic/detail/10167489
https://avg.163.com/topic/detail/10167468
https://avg.163.com/topic/detail/10167486
https://avg.163.com/topic/detail/10167487
https://avg.163.com/topic/detail/10167485
https://avg.163.com/topic/detail/10167484
https://avg.163.com/topic/detail/10167483
https://avg.163.com/topic/detail/10167482
https://avg.163.com/topic/detail/10167481
https://avg.163.com/topic/detail/10167382
https://avg.163.com/topic/detail/10167480
https://avg.163.com/topic/detail/10167478
https://avg.163.com/topic/detail/10167477
https://avg.163.com/topic/detail/10167476
https://avg.163.com/topic/detail/10167475
https://avg.163.com/topic/detail/10167474
https://avg.163.com/topic/detail/10167473
https://avg.163.com/topic/detail/10167472
https://avg.163.com/topic/detail/10167471
https://avg.163.com/topic/detail/10167389
https://avg.163.com/topic/detail/10167469
https://avg.163.com/topic/detail/10167467
https://avg.163.com/topic/detail/10167466
https://avg.163.com/topic/detail/10167465
https://avg.163.com/topic/detail/10167464
https://avg.163.com/topic/detail/10167463
https://avg.163.com/topic/detail/10167462
https://avg.163.com/topic/detail/10167461
https://avg.163.com/topic/detail/10167460
https://avg.163.com/topic/detail/10167459
https://avg.163.com/topic/detail/10167458
https://avg.163.com/topic/detail/10167457
https://avg.163.com/topic/detail/10167456
https://avg.163.com/topic/detail/10167388
https://avg.163.com/topic/detail/10167455
https://avg.163.com/topic/detail/10167454
https://avg.163.com/topic/detail/10167452
https://avg.163.com/topic/detail/10167453
https://avg.163.com/topic/detail/10167451
https://avg.163.com/topic/detail/10167450
https://avg.163.com/topic/detail/10167447
https://avg.163.com/topic/detail/10167446
https://avg.163.com/topic/detail/10167445
https://avg.163.com/topic/detail/10167444
https://avg.163.com/topic/detail/10167442
https://avg.163.com/topic/detail/10167441
https://avg.163.com/topic/detail/10167440
https://avg.163.com/topic/detail/10167356
https://avg.163.com/topic/detail/10167439
https://avg.163.com/topic/detail/10167438
https://avg.163.com/topic/detail/10167437
https://avg.163.com/topic/detail/10167436
https://avg.163.com/topic/detail/10167435
https://avg.163.com/topic/detail/10167348
https://avg.163.com/topic/detail/10167433
https://avg.163.com/topic/detail/10167411
https://avg.163.com/topic/detail/10167367
https://avg.163.com/topic/detail/10167432
https://avg.163.com/topic/detail/10167331
https://avg.163.com/topic/detail/10167431
https://avg.163.com/topic/detail/10167430
https://avg.163.com/topic/detail/10167429
https://avg.163.com/topic/detail/10167428
https://avg.163.com/topic/detail/10167426
https://avg.163.com/topic/detail/10167425
https://avg.163.com/topic/detail/10167422
https://avg.163.com/topic/detail/10167423
https://avg.163.com/topic/detail/10167342
https://avg.163.com/topic/detail/10167415
https://avg.163.com/topic/detail/10167420
https://avg.163.com/topic/detail/10167418
https://avg.163.com/topic/detail/10167416
https://avg.163.com/topic/detail/10167378
https://avg.163.com/topic/detail/10167344
https://avg.163.com/topic/detail/10167413
https://avg.163.com/topic/detail/10167400
https://avg.163.com/topic/detail/10167412
https://avg.163.com/topic/detail/10167313
https://avg.163.com/topic/detail/10167411
https://avg.163.com/topic/detail/10167410
https://avg.163.com/topic/detail/10167409
https://avg.163.com/topic/detail/10167408
https://avg.163.com/topic/detail/10167407
https://avg.163.com/topic/detail/10167406
https://avg.163.com/topic/detail/10167405
https://avg.163.com/topic/detail/10167404
https://avg.163.com/topic/detail/10167403
https://avg.163.com/topic/detail/10167402
https://avg.163.com/topic/detail/10167401
https://avg.163.com/topic/detail/10167400
https://avg.163.com/topic/detail/10167399
https://avg.163.com/topic/detail/10167354
https://avg.163.com/topic/detail/10167398
https://avg.163.com/topic/detail/10167397
https://avg.163.com/topic/detail/10167396
https://avg.163.com/topic/detail/10167395
https://avg.163.com/topic/detail/10167394
https://avg.163.com/topic/detail/10167393
https://avg.163.com/topic/detail/10167392
https://avg.163.com/topic/detail/10167391
https://avg.163.com/topic/detail/10167388
https://avg.163.com/topic/detail/10167390
https://avg.163.com/topic/detail/10167389
https://avg.163.com/topic/detail/10167387
https://avg.163.com/topic/detail/10167346
https://avg.163.com/topic/detail/10167384
https://avg.163.com/topic/detail/10167383
https://avg.163.com/topic/detail/10167283
https://avg.163.com/topic/detail/10167382
https://avg.163.com/topic/detail/10167381
https://avg.163.com/topic/detail/10167380
https://avg.163.com/topic/detail/10167289
https://avg.163.com/topic/detail/10167378
https://avg.163.com/topic/detail/10167377
https://avg.163.com/topic/detail/10167373
https://avg.163.com/topic/detail/10167376
https://avg.163.com/topic/detail/10167375
https://avg.163.com/topic/detail/10167372
https://avg.163.com/topic/detail/10167371
https://avg.163.com/topic/detail/10167370
https://avg.163.com/topic/detail/10167369
https://avg.163.com/topic/detail/10167368
https://avg.163.com/topic/detail/10167367
https://avg.163.com/topic/detail/10167365
https://avg.163.com/topic/detail/10167366
https://avg.163.com/topic/detail/10167364
https://avg.163.com/topic/detail/10167363
https://avg.163.com/topic/detail/10167361
https://avg.163.com/topic/detail/10167360
https://avg.163.com/topic/detail/10167358
https://avg.163.com/topic/detail/10167357
https://avg.163.com/topic/detail/10167356
https://avg.163.com/topic/detail/10167355
https://avg.163.com/topic/detail/10167354
https://avg.163.com/topic/detail/10167348
https://avg.163.com/topic/detail/10167353
https://avg.163.com/topic/detail/10167352
https://avg.163.com/topic/detail/10167351
https://avg.163.com/topic/detail/10167350
https://avg.163.com/topic/detail/10167349
https://avg.163.com/topic/detail/10167348
https://avg.163.com/topic/detail/10167347
https://avg.163.com/topic/detail/10167346
https://avg.163.com/topic/detail/10167342
https://avg.163.com/topic/detail/10167345
https://avg.163.com/topic/detail/10167344
https://avg.163.com/topic/detail/10167341
https://avg.163.com/topic/detail/10167343
https://avg.163.com/topic/detail/10167340
https://avg.163.com/topic/detail/10167339
https://avg.163.com/topic/detail/10167338
https://avg.163.com/topic/detail/10167333
https://avg.163.com/topic/detail/10167337
https://avg.163.com/topic/detail/10167336
https://avg.163.com/topic/detail/10167335
https://avg.163.com/topic/detail/10167334
https://avg.163.com/topic/detail/10167331
https://avg.163.com/topic/detail/10167329
https://avg.163.com/topic/detail/10167332
https://avg.163.com/topic/detail/10167330
https://avg.163.com/topic/detail/10167328
https://avg.163.com/topic/detail/10167327
https://avg.163.com/topic/detail/10167322
https://avg.163.com/topic/detail/10167326
https://avg.163.com/topic/detail/10167325
https://avg.163.com/topic/detail/10167324
https://avg.163.com/topic/detail/10167323
https://avg.163.com/topic/detail/10167321
https://avg.163.com/topic/detail/10167320
https://avg.163.com/topic/detail/10167319
https://avg.163.com/topic/detail/10167318
https://avg.163.com/topic/detail/10167317
https://avg.163.com/topic/detail/10167316
https://avg.163.com/topic/detail/10167314
https://avg.163.com/topic/detail/10167315
https://avg.163.com/topic/detail/10167305
https://avg.163.com/topic/detail/10167313
https://avg.163.com/topic/detail/10167311
https://avg.163.com/topic/detail/10167312
https://avg.163.com/topic/detail/10167309
https://avg.163.com/topic/detail/10167306
https://avg.163.com/topic/detail/10167308
https://avg.163.com/topic/detail/10167307
https://avg.163.com/topic/detail/10167304
https://avg.163.com/topic/detail/10167303
https://avg.163.com/topic/detail/10167302
https://avg.163.com/topic/detail/10167300
https://avg.163.com/topic/detail/10167301
https://avg.163.com/topic/detail/10167299
https://avg.163.com/topic/detail/10167298
https://avg.163.com/topic/detail/10167297
https://avg.163.com/topic/detail/10167296
https://avg.163.com/topic/detail/10167295
https://avg.163.com/topic/detail/10167294
https://avg.163.com/topic/detail/10167293
https://avg.163.com/topic/detail/10167292
https://avg.163.com/topic/detail/10167291
https://avg.163.com/topic/detail/10167289
https://avg.163.com/topic/detail/10167288
https://avg.163.com/topic/detail/10167286
https://avg.163.com/topic/detail/10167285
https://avg.163.com/topic/detail/10167284
https://avg.163.com/topic/detail/10167283
https://avg.163.com/topic/detail/10167282
https://avg.163.com/topic/detail/10167281
https://avg.163.com/topic/detail/10167279
https://avg.163.com/topic/detail/10167278
https://avg.163.com/topic/detail/10167277
https://avg.163.com/topic/detail/10167276
https://avg.163.com/topic/detail/10167273
https://avg.163.com/topic/detail/10167274
https://avg.163.com/topic/detail/10167275
https://avg.163.com/topic/detail/10167271
https://avg.163.com/topic/detail/10167272
https://avg.163.com/topic/detail/10167270
https://avg.163.com/topic/detail/10167269
https://avg.163.com/topic/detail/10167251
https://avg.163.com/topic/detail/10167268
https://avg.163.com/topic/detail/10167267
https://avg.163.com/topic/detail/10167266
https://avg.163.com/topic/detail/10167265
https://avg.163.com/topic/detail/10167264
https://avg.163.com/topic/detail/10167262
https://avg.163.com/topic/detail/10167263
https://avg.163.com/topic/detail/10167259
https://avg.163.com/topic/detail/10167260
https://avg.163.com/topic/detail/10167258
https://avg.163.com/topic/detail/10167257
https://avg.163.com/topic/detail/10167148
https://avg.163.com/topic/detail/10167256
https://avg.163.com/topic/detail/10167245
https://avg.163.com/topic/detail/10167075
https://avg.163.com/topic/detail/10167254
https://avg.163.com/topic/detail/10167252
https://avg.163.com/topic/detail/10167183
https://avg.163.com/topic/detail/10167251
https://avg.163.com/topic/detail/10167239
https://avg.163.com/topic/detail/10167250
https://avg.163.com/topic/detail/10167248
https://avg.163.com/topic/detail/10167247
https://avg.163.com/topic/detail/10167246
https://avg.163.com/topic/detail/10167244
https://avg.163.com/topic/detail/10167243
https://avg.163.com/topic/detail/10167241
https://avg.163.com/topic/detail/10167240
https://avg.163.com/topic/detail/10167238
https://avg.163.com/topic/detail/10167237
https://avg.163.com/topic/detail/10167236
https://avg.163.com/topic/detail/10167235
https://avg.163.com/topic/detail/10167234
https://avg.163.com/topic/detail/10167152
https://avg.163.com/topic/detail/10167233
https://avg.163.com/topic/detail/10167149
https://avg.163.com/topic/detail/10167231
https://avg.163.com/topic/detail/10167232
https://avg.163.com/topic/detail/10167227
https://avg.163.com/topic/detail/10167230
https://avg.163.com/topic/detail/10167229
https://avg.163.com/topic/detail/10167228
https://avg.163.com/topic/detail/10167225
https://avg.163.com/topic/detail/10167226
https://avg.163.com/topic/detail/10167224
https://avg.163.com/topic/detail/10167223
https://avg.163.com/topic/detail/10167221
https://avg.163.com/topic/detail/10167156
https://avg.163.com/topic/detail/10167168
https://avg.163.com/topic/detail/10167217
https://avg.163.com/topic/detail/10167219
https://avg.163.com/topic/detail/10167218
https://avg.163.com/topic/detail/10167216
https://avg.163.com/topic/detail/10167215
https://avg.163.com/topic/detail/10167214
https://avg.163.com/topic/detail/10167213
https://avg.163.com/topic/detail/10167135
https://avg.163.com/topic/detail/10167212
https://avg.163.com/topic/detail/10167143
https://avg.163.com/topic/detail/10167211
https://avg.163.com/topic/detail/10167210
https://avg.163.com/topic/detail/10167207
https://avg.163.com/topic/detail/10167209
https://avg.163.com/topic/detail/10167208
https://avg.163.com/topic/detail/10167205
https://avg.163.com/topic/detail/10167204
https://avg.163.com/topic/detail/10167203
https://avg.163.com/topic/detail/10167202
https://avg.163.com/topic/detail/10167201
https://avg.163.com/topic/detail/10167032
https://avg.163.com/topic/detail/10167199
https://avg.163.com/topic/detail/10167198
https://avg.163.com/topic/detail/10166581
https://avg.163.com/topic/detail/10167191
https://avg.163.com/topic/detail/10167197
https://avg.163.com/topic/detail/10166932
https://avg.163.com/topic/detail/10167194
https://avg.163.com/topic/detail/10167196
https://avg.163.com/topic/detail/10167195
https://avg.163.com/topic/detail/10167193
https://avg.163.com/topic/detail/10167190
https://avg.163.com/topic/detail/10166591
https://avg.163.com/topic/detail/10167188
https://avg.163.com/topic/detail/10167187
https://avg.163.com/topic/detail/10167186
https://avg.163.com/topic/detail/10167185
https://avg.163.com/topic/detail/10167184
https://avg.163.com/topic/detail/10167183
https://avg.163.com/topic/detail/10167181
https://avg.163.com/topic/detail/10167182
https://avg.163.com/topic/detail/10167180
https://avg.163.com/topic/detail/10167177
https://avg.163.com/topic/detail/10167178
https://avg.163.com/topic/detail/10167176
https://avg.163.com/topic/detail/10167175
https://avg.163.com/topic/detail/10167174
https://avg.163.com/topic/detail/10167173
https://avg.163.com/topic/detail/10167046
https://avg.163.com/topic/detail/10167172
https://avg.163.com/topic/detail/10167171
https://avg.163.com/topic/detail/10167170
https://avg.163.com/topic/detail/10167169
https://avg.163.com/topic/detail/10166944
https://avg.163.com/topic/detail/10167168
https://avg.163.com/topic/detail/10167167
https://avg.163.com/topic/detail/10166654
https://avg.163.com/topic/detail/10167166
https://avg.163.com/topic/detail/10167165
https://avg.163.com/topic/detail/10167164
https://avg.163.com/topic/detail/10167162
https://avg.163.com/topic/detail/10167163
https://avg.163.com/topic/detail/10167160
https://avg.163.com/topic/detail/10167159
https://avg.163.com/topic/detail/10167157
https://avg.163.com/topic/detail/10167156
https://avg.163.com/topic/detail/10167155
https://avg.163.com/topic/detail/10167154
https://avg.163.com/topic/detail/10167153
https://avg.163.com/topic/detail/10167152
https://avg.163.com/topic/detail/10167151
https://avg.163.com/topic/detail/10167150
https://avg.163.com/topic/detail/10167149
https://avg.163.com/topic/detail/10167148
https://avg.163.com/topic/detail/10167147
https://avg.163.com/topic/detail/10167146
https://avg.163.com/topic/detail/10167145
https://avg.163.com/topic/detail/10167144
https://avg.163.com/topic/detail/10167143
https://avg.163.com/topic/detail/10167142
https://avg.163.com/topic/detail/10167141
https://avg.163.com/topic/detail/10167139
https://avg.163.com/topic/detail/10167140
https://avg.163.com/topic/detail/10167138
https://avg.163.com/topic/detail/10167137
https://avg.163.com/topic/detail/10167133
https://avg.163.com/topic/detail/10167136
https://avg.163.com/topic/detail/10167135
https://avg.163.com/topic/detail/10167134
https://avg.163.com/topic/detail/10167132
https://avg.163.com/topic/detail/10167131
https://avg.163.com/topic/detail/10167130
https://avg.163.com/topic/detail/10167128
https://avg.163.com/topic/detail/10167126
https://avg.163.com/topic/detail/10167127
https://avg.163.com/topic/detail/10167125
https://avg.163.com/topic/detail/10167124
https://avg.163.com/topic/detail/10167123
https://avg.163.com/topic/detail/10167121
https://avg.163.com/topic/detail/10167122
https://avg.163.com/topic/detail/10167120
https://avg.163.com/topic/detail/10167119
https://avg.163.com/topic/detail/10167118
https://avg.163.com/topic/detail/10167086
https://avg.163.com/topic/detail/10167117
https://avg.163.com/topic/detail/10167116
https://avg.163.com/topic/detail/10167115
https://avg.163.com/topic/detail/10167113
https://avg.163.com/topic/detail/10167112
https://avg.163.com/topic/detail/10167110
https://avg.163.com/topic/detail/10167091
https://avg.163.com/topic/detail/10165558
https://avg.163.com/topic/detail/10167084
https://avg.163.com/topic/detail/10167083
https://avg.163.com/topic/detail/10167073
https://avg.163.com/topic/detail/10167077
https://avg.163.com/topic/detail/10165033
https://avg.163.com/topic/detail/10167075
https://avg.163.com/topic/detail/10167048
https://avg.163.com/topic/detail/10167046
https://avg.163.com/topic/detail/10167032
实例
#include
当上面的程序运行时,会输出下列结果:
-15536 50000
上述结果中,无符号短整数 50,000 的位模式被解释为有符号短整数 -15,536。
C++ 中的类型限定符
类型限定符提供了变量的额外信息,用于在定义变量或函数时改变它们的默认行为的关键字。
| 限定符 | 含义 |
|---|---|
| const | const 定义常量,表示该变量的值不能被修改。 |
| volatile | 修饰符 volatile 告诉该变量的值可能会被程序以外的因素改变,如硬件或其他线程。。 |
| restrict | 由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。 |
| mutable | mutable 用于修饰类的成员变量。被 mutable 修饰的成员变量可以被修改,即使它们所在的对象是 const 的。 |
| static | 用于定义静态变量,表示该变量的作用域仅限于当前文件或当前函数内,不会被其他文件或函数访问。 |
| register | 用于定义寄存器变量,表示该变量被频繁使用,可以存储在CPU的寄存器中,以提高程序的运行效率。
在 C++11 中被标记为弃用(deprecated) 在 C++17 中被正式移除。 |
const 实例
const int NUM = 10; // 定义常量 NUM,其值不可修改 const int* ptr = # // 定义指向常量的指针,指针所指的值不可修改 int const* ptr2 = # // 和上面一行等价
volatile 实例
volatile int num = 20; // 定义变量 num,其值可能会在未知的时间被改变
mutable 实例
class Example {
public:
int get_value() const {
return value_; // const 关键字表示该成员函数不会修改对象中的数据成员
}
void set_value(int value) const {
value_ = value; // mutable 关键字允许在 const 成员函数中修改成员变量
}
private:
mutable int value_;
};
static 实例
void example_function() {
static int count = 0; // static 关键字使变量 count 存储在程序生命周期内都存在
count++;
}
register 实例
void example_function(register int num) {
// register 关键字建议编译器将变量 num 存储在寄存器中
// 以提高程序执行速度
// 但是实际上是否会存储在寄存器中由编译器决定
}
C++11 后 register 的变化:
- 在 C++11 中被标记为弃用(deprecated)
- 在 C++17 中被正式移除
- 保留为关键字(可能用于兼容或未来用途)








