对变量的命名与符号常量的命名存在一些限制条件。名字是由字母和数字组成的序列,但其第一个字符必须为字母。由于库例程的名字通常以下划线开头,因此变量名不要以下划线开头。
对于内部名而言,至少前31个字符是有效的。函数名与外部变量名包含的字符数目可能小于31,这是因为汇编程序和加载程序可能会使用这些外部名,而语言本身是无法控制加载和汇编程序的。
char 字符型,占用一个字节,可以存放本地字符集中的一个字符。
int 整型,通常反映了所用机器中整数的最自然长度
float 单精度浮点型
double 双精度浮点型
练习2-1:编写一个程序以确定分别由signed及unsigned限定的char、short、int与long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现。
1.采用标准头文件
代码
#include
#include
#include
int main()
{
printf("signed char min=%d, signed char max=%d\n", SCHAR_MIN, SCHAR_MAX);
printf("unsigned char max=%d\n", UCHAR_MAX);
printf("signed short min=%d, signed short max=%d\n", SHRT_MIN, SHRT_MAX);
printf("unsigned short max=%d\n", USHRT_MAX);
printf("signed int min=%d, signed int max=%d\n", INT_MIN, INT_MAX);
printf("unsigned int max=%d\n", UINT_MAX);
printf("signed long min=%d, signed long max=%d\n", LONG_MIN, LONG_MAX);
printf("unsigned long max=%d\n", ULONG_MAX);
system("pause");
return 0;
}
运行结果
2.采用直接计算方法
#include
#include
int main()
{
int j; //定义一个对比变量
signed char sc_i;
for (sc_i=1, j=0; sc_i==j+1; sc_i++, j++);
printf("signed char max=%d, ", j);
for (sc_i=-1, j=0; sc_i==j-1; sc_i--, j--);
printf("signed char min=%d\n", j);
unsigned char uc_i;
for (uc_i=1, j=0; uc_i==j+1; uc_i++, j++);
printf("unsigned char max=%u\n", j); //需要注意无符号输出的格式为%u
signed short ss_i;
for (ss_i=1, j=0; ss_i==j+1; ss_i++, j++);
printf("signed short max=%d, ", j);
for (ss_i=-1, j=0; ss_i==j-1; ss_i--, j--);
printf("signed short min=%d\n", j);
unsigned short us_i;
for (us_i=1, j=0; us_i==j+1; us_i++, j++);
printf("unsigned short max=%u\n", j); //需要注意无符号输出的格式为%u
/*需要注意int和long的情况下,无符号的正数值范围要超过有符号的,所以,在定义无符号的变量时,
要重新定义一个无符号对比变量*/
signed int si_i;
for (si_i=1, j=0; si_i>j; si_i++, j++);
printf("signed int max=%d, ", j);
for (si_i=-1, j=0; si_ik; ui_i++, k++);
printf("unsigned int max=%u\n", k); //需要注意无符号输出的格式为%u
signed long sl_i;
for (sl_i=1, j=0; sl_i>j; sl_i++, j++);
printf("signed long max=%d, ", j);
for (sl_i=-1, j=0; sl_im; ul_i++, m++);
printf("unsigned long max=%u\n", m); //需要注意无符号输出的格式为%u system("pause");
return 0;
}
运行结果