c有多种数据类型。基本的数据类型包含两大类:整数类型和浮点类型。
整数类型的两个重要特征是其类型的大小以及它是有符号还是无符号的。最小的整数类型是char,因实现不同可以是有符号或无符号的,可以使用signed char和unsigned char确定该类型的符号属性,不过这通常用于使用此类型表示小整数而非字符编码。其他的整数类型包括short、int、long和long long类型。对于上述类型的大小,C要求后面的类型不能小于前面的类型。上述类型都是有符号的,但可以使用unsigned关键字产生相应的无符号类 型:unsigned short、unsigned int、unsigned long 和 unsigned long long 类型,也可以使用 signed 修饰词明确地表示一个类型为有符号类型。最后,_Bool类型是一种无符号类型,它只包含两个值0和1,对应于false 和 true。
3种浮点类型为float、double和ANSI C新增的long double,后面类型的大小至少要和前面的类型 样大。有些实现中支持复数和虚数类型,方法是把_Complex和_Imaginary关键字同浮点类型界键字结合使用,例如 double _Complex 和 float _Imaginary 类型。
整数可以表达为十进制、八进制或十六进制形式。前缀0指示八进制数,前缀Ox或0X指示十六进制 数。例如,32、040和0x20分别表示十进制、八进制和十六进制的同一个值。后缀l或L指示Long类型值, 后缀ll或LL表示long long类型值。
字符常量表示为放在单引号中的一个字符,比如•0’、‘8•和c的转义序列(例如V)用于表示…些 非打印字符。可以使用诸如’\oo了这样的形式通过字符的ASCII码表示一个字符。
浮点数可以书写为小数点固定的形式,比如9393.912;或者书写为指数形式,比如7.38E10。 printfO函数通过对应于各种类型的转换说明符打印相应类型的数据。形式最简单的转换说明符由一 个ff分号和一个指示类型的字符组成,比如%d或%f。
需要用long类型变量代替int类型变量的原因是什么?
一个原因是在您的系统中long可以容纳比int更大的数;
另一个原因是如果您确实需要处理更大的 值,那么使用一种在所有系统上都保证至少是32位的类型会使程序的可移植性更好。
/* printl.c --说明 printf ()的一些属性 */
#include<stdio.h>
//#include<inttypes.h>
int main(void)
{
int ten=10;
int two=2;
int x=100;
unsigned int un = 3000000000;/* int 为 32 位 */
short end = 200; /* 和 short 为 16 位的*/
long big = 65537;
char ch;
long long verybig = 12345678908642;
float aboat=3200.0;
double abet=2.14e9;
long double dip=5.32e-5;
float salary;
int ascii;//输入ascii码
float fds;//以小数和指数输出浮点值
int ags;//输入年龄显示多少秒
float age;
printf("Doing it right:");
printf("%d minus %d is %d\n",ten,2,ten-two);
printf("Doing it wrong");
printf("%d minus %d is %d\n",ten); 忘掉了 2 个参数
printf("/\n");
/* bases.c --以十进制、八进制#十六进制形式输出100 */
printf("dec=%d; octal=%o; hex=%x\n",x,x,x);
printf("dec=%d; octal=%#o; hex=%#x\n",x,x,x);
printf("/\n");
/* prjntf.c -- printf()的更多属*/
printf("un = %u and no %d\n", un,un);
printf("end = %hd and %d\n",end,end);
printf( "big = %ld and not %hd\n",big,big);
printf ("ver/bigr %lid and not %ld\n", verybig, verybig );
/* charcode.c --显示一个字符的编码值*/
printf("/\n");
printf("Please enter a character.\n");
scanf("%c",&ch);
printf("the code for %c is %d\n",ch,ch);
printf("/\n");
/*以两种方式显示浮点值*/
printf("%f can be written %e\n",aboat,aboat);
printf("%f can be written %e\n",abet,abet);
printf("%f can be written %e\n",dip,dip);
printf("/\n");
/* escape.c --使用转义字符*/
printf ("\aEnter your desired monthly salary:" ); /* 1 */
printf (" $_______ \b\b\b\b\b\b\b" ); /* 2 */
scanf ("%f", &salary);
printf ("\n\t$%.2f a month is $%.2f a year.", salary,salary * 12.0); /* 3 */
printf ( "\rGee!\n"); /* 4 */
//输入ascii码输出字符
printf("/\n");
printf("输入ascii码输出字符\n");
scanf("%d",&ascii);
printf("%d is %c\n",ascii,ascii);
//以小数和指数输出浮点值
printf("/\n");
printf("以小数和指数输出浮点值\n");
scanf("%f",&fds);
printf("The input is %f or %e\n",fds,fds);
//输入年龄显示多少秒
printf("/\n");
printf("输入年龄显示多少秒\n");
scanf("%d",&ags);
age=ags*3.156e7;
printf("The input is %f or %e\n",age,age);
return 0;
}