四川关于工程建设网站,传奇手游发布网站,工程施工项目管理软件,个人建设网站盈利需要什么材料C 修饰符类型
C 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义#xff0c;所以它更能满足各种情境的需求。
下面列出了数据类型修饰符#xff1a;
signedunsignedlongshort
修饰符 signed、unsigned、long 和 short 可应用于整型#…C 修饰符类型
C 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义所以它更能满足各种情境的需求。
下面列出了数据类型修饰符
signedunsignedlongshort
修饰符 signed、unsigned、long 和 short 可应用于整型signed 和 unsigned 可应用于字符型long 可应用于双精度型。
修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如unsigned long int。
C 允许使用速记符号来声明无符号短整数或无符号长整数。您可以不写 int只写单词 unsigned short 或 unsigned longint 是隐含的。例如下面的两个语句都声明了无符号整型变量。
unsigned x;
unsigned int y;为了理解 C 解释有符号整数和无符号整数修饰符之间的差别我们来运行一下下面这个短程序
#include iostream
using namespace std;/* * 这个程序演示了有符号整数和无符号整数之间的差别
*/
int main()
{short int i; // 有符号短整数short unsigned int j; // 无符号短整数j 50000;i j;cout i j;return 0;
} 当上面的程序运行时会输出下列结果
-15536 50000上述结果中无符号短整数 50,000 的位模式被解释为有符号短整数 -15,536。
C 中的类型限定符
类型限定符提供了变量的额外信息。
限定符含义constconst 类型的对象在程序执行期间不能被修改改变。volatile修饰符 volatile 告诉编译器变量的值可能以程序未明确指定的方式被改变。restrict由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。
C 存储类
存储类定义 C 程序中变量/函数的范围可见性和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类
autoregisterstaticexternmutable
auto 存储类 在C11 中 auto 关键字不再是C存储类说明符。从C11开始auto 关键字声明一个变量该变量的类型是从其声明中的初始化表达式推导出来的。 auto 存储类是所有局部变量默认的存储类。
{int mount;auto int month;
}上面的实例定义了两个带有相同存储类的变量auto 只能用在函数内即 auto 只能修饰局部变量。
register 存储类
register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小通常是一个词且不能对它应用一元的 运算符因为它没有内存位置。
{register int miles;
}寄存器只用于需要快速访问的变量比如计数器。还应注意的是定义 register 并不意味着变量将被存储在寄存器中它意味着变量可能存储在寄存器中这取决于硬件和实现的限制。
static 存储类
static 存储类指示编译器在程序的生命周期内保持局部变量的存在而不需要在每次它进入和离开作用域时进行创建和销毁。因此使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。
static 修饰符也可以应用于全局变量。当 static 修饰全局变量时会使变量的作用域限制在声明它的文件内。
在 C 中当 static 用在类数据成员上时会导致仅有一个该成员的副本被类的所有对象共享。
#include iostream// 函数声明
void func(void);static int count 10; /* 全局变量 */int main()
{while(count--){func();}return 0;
}
// 函数定义
void func( void )
{static int i 5; // 局部静态变量i;std::cout 变量 i 为 i ;std::cout , 变量 count 为 count std::endl;
}
尝试一下
当上面的代码被编译和执行时它会产生下列结果
变量 i 为 6 , 变量 count 为 9
变量 i 为 7 , 变量 count 为 8
变量 i 为 8 , 变量 count 为 7
变量 i 为 9 , 变量 count 为 6
变量 i 为 10 , 变量 count 为 5
变量 i 为 11 , 变量 count 为 4
变量 i 为 12 , 变量 count 为 3
变量 i 为 13 , 变量 count 为 2
变量 i 为 14 , 变量 count 为 1
变量 i 为 15 , 变量 count 为 0
extern 存储类
extern 存储类用于提供一个全局变量的引用全局变量对所有的程序文件都是可见的。当您使用 extern 时对于无法初始化的变量会把变量名指向一个之前定义过的存储位置。
当您有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。可以这么理解extern 是用来在另一个文件中声明一个全局变量或函数。
extern 修饰符通常用于当有两个或多个文件共享相同的全局变量或函数的时候如下所示
第一个文件main.cpp
#include iostreamint count ;
extern void write_extern();int main()
{count 5;write_extern();
}第二个文件support.cpp
#include iostreamextern int count;void write_extern(void)
{std::cout Count is count std::endl;
}
在这里第二个文件中的 extern 关键字用于声明已经在第一个文件 main.cpp 中定义的 count。现在 编译这两个文件如下所示
$g main.cpp support.cpp -o write这会产生 write 可执行程序尝试执行 write它会产生下列结果
$ ./write
Count is 5
mutable 存储类
mutable 说明符仅适用于类的对象这将在本教程的最后进行讲解。它允许对象的成员替代常量。也就是说mutable 成员可以通过 const 成员函数修改。