①打印:printf("%d",变量),%d可以变为%f %s,但在定义变量的时候,要用“float 变量”或者“char 变量”定义,否则调试可以通过,但是结果不正确。关于浮点数,使用%.2f即可输出精度为小数点后两位的数值。
②输入:scanf已经不太安全,一般使用scanf_s(),scanf_s("%d",&变量),另外,输入字符串时候一定要规定字符串的长度,否则会调试报错,如scanf_s("%s",&字符型变量,字符串长度)。
③数据类型关键字:
int,整数类型;(long,short,unsigned,signed为修饰整形的变式,如unsigned short int,long long int 等)。
char,表示字母或者字符,也可以表示较小的整数。
#include <stdio.h>
int main()
{
char c[50];
printf("starting now:\n");
scanf_s("%s", &c,50);
printf("%s",c);
getchar();
getchar();
return 0;
}
float,double和long double表示带小数点的数。
_Bool,表示布尔值(true或false)_Complex和_Imaginary分别表示复数和虚数。
④以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x;另外要显示各进制数的前缀,必须使用%#o,%#x。
#include <stdio.h>
int main()
{
int number=100;
printf("十进制 = %d,八进制 = %o,十六进制 = %x\n",number,number,number);
printf("十进制 = %#d,八进制 = %#o,十六进制 = %#x\n", number,number,number);
getchar();
return 0;
}
十进制 = 100,八进制 = 144,十六进制 = 64
十进制 = 100,八进制 = 0144,十六进制 = 0x64
⑤其他整数类型:
short int(short) 类型,占的空间比int类型小,存储小数值用以节省空间;
long int(long)类型:存储空间比int多,用于存储较大的数;
long long int(longlong)类型:适用于更大的数值,至少占用64位。
unsigned int(unsigned)类型:只用于非负值的场合,允许的存储范围是0~65535,用于表示正负号的位现在用于表示另一个位,所以可以表示更大的数。
signed类型:在任何有符号类型之前添加关键字signed,是强调使用有符号类型的意图;不改变其类型。
⑥溢出的情况:如果整数超过了相应的取值范围就会溢出,超过最大值的时候则会从最小值开始计数。如
#include <stdio.h>
int main()
{
int i = 2147483647;
unsigned int j = 4294967295;
printf(" %d %d %d\n",i,i+1,i+2);
printf(" %u %u %u\n",j,j+1,j+2);
getchar();
return 0;
}
结果为
2147483647 -2147483648 -2147483647
4294967295 0 1
⑦多种printf()格式:%ld,%lx,%lo,打印long类型整数;%hd,%ho,%h,打印short类型整数;同理l和h都可以和u一起使用,表示无符号类型,如%lu;还有long long类型,%llu和%lld。
使用错误的转换说明会得到错误的结果。所以应该保证在使用printf()的时候保证转换类型与待打印的类型相匹配。
⑧%s,%c的区别:%s是输出字符串,%c是输出单个字符,另外字符串的定义需要用整形int,字符的定义用char。
⑨如果定义一个字符常量如‘asdf’(32位),并将其赋给char型变量,那么只有最后八位有效,即打印输出结果为f。
⑩char可以为有符号和无符号类型:可以在前面加unsigned或signed用来区分。