P52- 数据类型的转换
1.为变量赋值的时候,赋值的数据的类型要和变量的类型一致,否则会出问题
当我们为变量赋值的时候,如果赋值的数据的类型和变量类型不一致,这时候C系统就会将赋值的数据的类型转换为变量的类型,然后再赋值。
这种情况我们叫做自动类型转换。
2.当变量类型是int类型的时候。
2.1 如果我们赋值的数据超过了int的范围,这时候C系统会将数据转换为1个随机的int数据。
int num = 2200000000;
printf("num = %d\n",num);
运行结果:
num = -2094967296
2.2 如果我们复制的数据超过int范围太多,编译器直接报错(“Integer literal is too large to be represented in any integer type”)
2.3 如果我们赋值的数据是1个实型的小数,这个时候C系统会截取整数部分。
3.当变量类型是float类型的时候。
3.1 如果我们赋值的数据是1个double类型的小数,这时候C系统会将这个double类型的小数转换为float。
3.2 如果我们赋值的数据是1个整数,那么将这个整数转换为float小数,直接加1个.0
4.当变量是char类型的时候
为char变量赋值的时候可以直接赋值ASCII码。
每一个字符都有一个与之对应的整数,这个整数叫做字符的ASCII码。
要记住这3个ASCII码 'A'=65 'a'=97 '0'=48
P53-scanf的简单使用
1.scanf函数。
1.1 作用
可以在程序运行的时候吗,让用户输入数据,然后将用户输入的数据赋值给指定的变量。
1.2 语法格式:
scanf("格式控制符",变量地址列表);
1.3 简单的使用步骤。
a.在格式控制符中使用占位符要求用户输入一个指定类型的数据。
b.在后面写上要将用户输入的数据存储到哪1个变量的地址。使用&就可以取到变量的地址。(变量的地址 = &变量)
案例:
int qqNum = 0;
int qqPwd = 0;
printf("请输入QQ号码:");
scanf("%d",&qqNum);
printf("请输入QQ密码:");
scanf("%d",&qqPwd);
printf("正在发送数据...\n");
printf("恭喜你,%d 登录成功\n",qqNum);
a.scanf函数是阻塞式的函数。当CPU执行到scanf函数的时候,CPU的执行就会暂停,不会继续执行,并等待用户输入数据,当用户输入完数据,按下回车表示输入完毕。这个时候,就会将用户输入的数据赋值给后面指定的变量,再继续执行。
★★注意★★:
如果程序没有输出信息,就不会弹出控制台输出区域。
p54-使用scanf接收各个类型的数据。
想让用户输入什么类型的数据是根据格式控制符中的占位符来决定的。
%d 用户输入int类型的数据
%f 用户输入float类型的数据
%lf 用户输入double类型的数据
%c 用户输入char类型的数据
{ -网络查询-
%c 读入一个字符
%d 读入十进制整数
%f 读入一个浮点数
%o 读入一个八进制整数
%x 读入十六进制整数
%s 读入一个字符串
%p 读入一个指针
%[] 扫描字符集合,输入的字符属于方括号内字符串中某个字符,则提取该字符,否则结束提取
%[^] 扫描字符集合,输入的字符属于属于方括号内字符串中的某个字符,结束提取
}
1.先声明1个l变量,变量的类型要和用户输入的数据类型一致。
2.使用scanf函数让用户输入数据。
a.在格式控制符中写上对应的占位符,一定要是对应的。
b.要将用户输入的数据存储到哪1个变量中,就把变量的地址卸载后面,使用&可以取到变量的地址。
★★注意★★:
1.如果之前的程序没有停止,要再运行程序的话,建议将之前的程序停掉,否则可能会出错。
2.scanf 格式控制符不要加占位符意外的东西 例如“\n“
3.scanf 后面要写的是变量地址(&变量名) ,不是变量。
P57-使用scanf一次接收多个数据
1.scanf为防止用户输入数据与要求类型不一致,在声明变量的时候就要给存储输入数据的变量一个默认值。
2.如果要求用户输入的数据是一个数(实型和整型)。在用户输入数据前,输入的空格、回车,TAB键都会被自动忽略。直到用户输入一个数据并按下回车。
3.使用scanf函数接收用户输入多个数据。
3.1 在格式控制符中写上多个占位符就可以,有多少个占位符就要输入多少个数据。占位符是什么类型的就代表要用户输入的数据的类型。
3.2 在后面依次写上存储用户输入数据的变量地址。
3.3 用户在输入数据的时候,可以使用空格回车来分割多个数据。
4.用户s在输入多个数据的时候,默认的分隔符号是空格或者回车。
自定义分隔符,在格式控制字符串中,可以自定义多个输入数据的分隔符。
例:scanf("%d-%d-%f",&num,&boyNum,&avg);//分隔符号是-
代表输入3个数据,这3个数据使用-分开。
注意:1.一旦指定了分隔符,就必须使用指定的分隔符 空格和回车就无法使用了
2.如果使用scanf函数,一次输入多个数据,只能是数(整型和浮点型),如果char混合输入就会出问题。
P58.scanf的缓冲区。
1.在执行scanf函数的时候,会让用户输入1个数据。数据输入完毕之后,并不是将这个数据赋值给变量。而是先将数据存储在缓冲区。
2.在执行scanf函数的时候,会先检查缓冲区中是否有数据,如果缓冲区当中没有数据,那么久会让用户从键盘输入,如果缓冲区当中有数据,直接从缓冲区将数据取出,不会让用户输入。
3.当从缓冲区拿数据的时候,如果要拿的数据类型是整数或者实型。如果拿到的是空格、回车、TAB键就会自动忽略,继续向下拿。
如果要拿的数据是字符型,不会忽略任何数据。
rewind(stdin); 这局代码的作用将缓冲区的数据全部清空。
{★★★★★ rewind(stdin) 是把文件指针回绕到文件起始处。★★★★★}
P59.交换两个变量的值。
1.声明第三方临时变量,来交换。(转圈:a给c,b给a,c给b)
int a = 10; b = 20;
int c = a;
a = b;
b = c;
2.两数相加再相减。
int num1 = 10;
int num2 = 20;
num1=num1+num2; //num1=10+20
num2=num1-num2; //num2=30-20 =10
num1=num1-num2; //num1=30-10 =20
3.使用异或运算交换两个变量的值。
int num1 = 10;
int num2 = 20;
num1=num1^num2; //num1=30
num2=num1^num2; //num2=20
num1=num1^num2; //num1=10
本文介绍了C语言中数据类型转换的规则,包括自动类型转换可能导致的问题,以及如何进行不同类型的赋值。同时详细讲解了scanf函数的使用,包括其作用、语法格式、接收不同类型数据的方法,以及scanf的缓冲区管理。最后提到了交换两个变量值的常见方法,如使用第三方变量和异或运算。
767

被折叠的 条评论
为什么被折叠?



