一、整型常量
• 十进制整数:
由数字0~9和正负号表示。 如123,-456,0
• 八进制整数:
由数字0开头,后跟数字0~7表示。 如0123,011
• 十六进制整数:
由0x或0X开头,后跟0~9,a~f,A~如0x123,0Xff
• 长整型常量:
789L、017L、0x12aL(用l或L引出)
#includeint main() { // 直接写的数值默认是十进制 printf("%d\n", 10); // 八进制数值 printf("%d\n", 010); // 十六进制 printf("%d\n", 0xff); // sizeof()计算数据类型长度 printf("%d\n", sizeof(int)); printf("%d %d\n", 10L, sizeof(10l)); return 0; }
二、原码、反码和补码
原码:最高位为符号位,其余位为数值本身的绝对值
反码:正数的反码与原码相同
负数符号位不变,其余位取反
补码:正数的补码与原码、反码相同
负数最高位为1,其余位原码取反,再对整个位加1 。
三、整型变量
• 整型变量用于存放整型数据。根据数值的表示范围整型可以为整型(int)、短整型(short)、长整型(long)三种。
• 这三种整型都默认为有符号型(signed),有符号型即可以是正数、负数和0。也可以根据需要,将整型指定为无符号型(unsigned),此时整型变量只能存放非负数。
• 上面提到的short、long、signed、unsigned都是一些类型修饰符,用于补充说明变量的特性。
#include#include int main() { short s = 10; int i = 100; long l = 1000; // short占两个字节 16位 // 0000 0000 0000 0000 // 0111 1111 1111 1111 32767 // 1111 1111 1111 1111 -32767 printf("short所占字节数:%d\n", sizeof(short)); // int 4个字节 32位 2的32次方 printf("int类型的最大值是:%d\n", INT_MAX); printf("int类型的最小值是:%d\n", INT_MIN); printf("int所占字节数:%d\n", sizeof(int)); printf("long所占字节数:%d\n", sizeof(long)); return 0; }
四、浮点型常量
• 十进制小数形式:
必须带小数点 • 如0.123, .123, 123.0, 0.0, 123 。
• 指数形式:
e或E之前必须有数字;指数必须为整数 • 如12.3e3, 123E2, 1.23e4, e-5 ,1.2E-3.5
12.3e3相当于12.3的10的3次方
• 实型常量的类型细分:
• 默认为double型,例如3.14就是double类型
• 后面加f或F认为是float型,例如3.14f就是float类型 浮点型常量
五、浮点型变量
浮点型分为单精度型(float)和双精度型(double)两种。
• float型数据占用4个字节(32bits)存储单元,提供的有效数字是6~7位。
• double型数据占用8个字节(64bits)存储单元,提供的有效数字是15~16位。
#includeint main() { printf("float所占字节数:%d\n", sizeof(float)); printf("double所占字节数:%d\n", sizeof(double)); printf("2.13所占字节数:%d\n", sizeof(2.13)); printf("1.23f所占字节数:%d\n", sizeof(1.23f)); printf("%f", 2.13); printf("%f", 1.23f); return 0; }
#includeint main() { char c='a'; short s=10; int i=100; long l=1000; float f=3.22; double d=6.77; printf("%d\n",sizeof(c+s)); //short 和 char进行运算时候,会默认转换为int类型 printf("%d\n",sizeof(s+i)); //short 和 char进行运算时候,会默认转换为int类型 }
例:给出三角形的三边长,求三角形面积。
#include#include //给出三角形的三边长,求三角形面积。 /** 计算三角形面积 公式: s2 = p(p - a)(p - b)(p - c) p = (a + b + c) / 2 */ int main() { double a,b,c; double p,s; printf("输入三角形三条边长:"); scanf("%lf %lf %lf",&a,&b,&c); //double的格式化类型为%lf if(a+b>c && a+c>b && b+c>a) { p=(a+b+c)/2.0; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("a=%lf\tb=%lf\tc=%lf\n",a,b,c); printf("三角形面积:%.2lf",s); } else { printf("三边不能构成三角形"); } return 0; }
六、字符型常量
• 定义:用单引号括起来的单个普通字符或转义字符。
• 字符常量的值:该字符的ASCII码值。
putchar 可以输出字符。
#includeint main() { char a='1'; char b=1; printf("%c\n",a); //输出字符 printf("%d\n",a); //输出ASCII码值 printf("%c\n",b); //输出b的ASCII码所对应的符号 printf("%d",b); //输出整数 // putchar('A'); // putchar('\n'); // putchar('a'); return 0; }
七、字符串常量
定义:双引号括起来的字符序列
如:“hello world” “A” “ ”
每个字符串结尾自动加上‘\0’作为字符串的结束标志
#includeint main() { printf("hello world\n"); putchar('h'); putchar('e'); putchar('l'); putchar('l'); putchar('0'); putchar('\n'); printf("A"); // 字符串后面默认加上/0 printf("空字符串所占字节数:%d\n", sizeof("")); // 2 printf("A所占字节数:%d\n", sizeof("A")); // "A" = 'A' + '\0' // 1 printf("char类型所占字节数:%d\n", sizeof(char)); // 输出字符函数 putchar('A'); putchar('\n'); putchar(65); return 0; }
八、ASCII码值
ASCII码表:https://baike.baidu.com/item/ASCII/309296?fromtitle=ascii码表&fromid=19660475&fr=aladdin
#includeint main() { char ch1,ch2; printf("输入一个大写字母:"); scanf("%c",&ch1); ch2=ch1+32; printf("输出小写:%c",ch2); return 0; }
九、强制类型转换
• 例 (int)(x + y)
(int)x + y
(double)(3/2) (int)3.6
• 说明:强制转换得到所需类型的中间变量,原变量类型、量值保持不变。
注意:较高类型向较低类型转换时可能出现精度损失。
#includemain() { float x; int i; x=3.6; i=(int)x; printf("x=%f,i=%d",x,i); }
结果:x=3.600000,i=3
十、课后练习
#include/* 某公司为员工提供了基本工资、物价津贴及房租津贴。 其中物价津贴占基本工资的 40%, 房租津贴占基本工资的 20%。 编写一个程序计算实领工资,要求输入某员工的基本工资, 计算应向该员工支付的实际工资。 */ int main() { float a; //物价津贴 float b; //房租津贴 float c; //基础工资 float s; //实领工资 printf("请输入基础工资:"); scanf("%f",&c); a=0.4*c; b=0.2*c; s=a+b+c; printf("实领工资为 %f",s); }
输出结果
#include/* 某城市的温度是以华氏度为单位记录的。 编写一个程序,将温度转换为摄氏度,并以华氏度 和摄氏度为单位显示温度。 摄氏度与华氏度的转换公式为:摄氏度 = 5 / 9.0 * (华氏度 - 32)。 */ int main() { double c,f; printf("请输入华氏温度"); scanf("%lf",&f); c=(5/9.0)*(f-32); printf("摄氏温度为:%.3lf℃\t华氏温度为:%.3lf℉",c,f); return 0; }
输出结果
#include/* 编写一个程序,要求根据用户输入矩形的长和宽,计算矩形的面积和周长。 */ int main() { float i,j,c,s; printf("请输入矩形的长:"); scanf("%f",&i); printf("请输入矩形的宽:"); scanf("%f",&j); c=2*(i+j); s=i*j; printf("矩形的周长:%f\n矩形的面积:%f",c,s); return 0; }
输出结果