黑马程序员——数据类型、printf函数与scanf函数
2015-12-05 11:39
405 查看
------ Java培训、Android培训、iOS培训、.Net培训期待与您交流! ------
http://www.itheima.com
一、C语言数据类型;
1分类:基本类型、构造类型、指针类型、空类型。
1.1基本数据类型又分为:整型(短整型、整型、长整型)、实型(单精度型、双精度型)、字符型、枚举型。
1.2构造类型又分为:数组类型、结构体类型、共用体类型。
2.数据类型决定了数据在内存中占用的字节数以及取值范围。
二、常量与变量
1.常量:值不能被改变的量(常数)。
1.1.分类:整型常量(2,-2)、实型常量(2.2,-2.31)、字符常量(‘a’)、字符串常量“abc”、符号常量。
1.1.1符号常量:用标识符代表的常量,一般用大写字母表示,例如在宏定义时的应用。#define PI 3.14 其中PI就是一个符号常量。
2.标识符:所谓标识符就是在程序中定义的一些名称,例如变量名、函数名、数组名、符号常量名、文件名等。
2.1分类:关键字、预定义标识符、用户标识符。
2.2命名规则:由字母、数字、下划线、美元符号$组成;首字母不能是数字;不能与关键字同名;严格区分大小写。
2.3规范内容:起一个有意义的名称,见名知义;如果一个标示符有多个单词组成,第一单词的首字母小写,其他单词的首字母都大写,或者所有的单词的首字母都大写。
3.变量:值可以改变的量。
注意点:
严格遵守标识符的命名规范,变量名不能同名;
变量名和变量值的区别:我们定义变量时会在内存中开辟一个空间,变量名实为该空间一个符号地址,变量值存储在该空间内;
变量定义以后,是有值的,为了防止变量的原来的值对我们的程序产生影响,我们要初始化也就是给变量赋初值;
变量使用:等号的左侧必须是一个变量,一定不能写一个常量,等号的右侧可以是变量、常量、表达式;
作用域:变量作用域可以理解为变量可以使用的范围,变量按照作用域分为局部变量和全局变量;在函数的内部或者代码块的内部定义的变量,称为局部变量,其作用域从局部变量定义的位置开始,到它所在的代码块或者函数体的“}”为止,在代码块的内部可以定义和块外部同名的变量,此时块内部的变量会暂时屏蔽块外部的变量的作用域;在函数的外部定义的变量是全局变量,从定义的位置开始,到文件末尾,在不同的函数中都可以使用。
三、printf函数:标准的库函数,使用时要包含头文件:#include <stdio.h>
格式控制符:
%d 输出十进制的整
%f 输出实型的数
%c 输出字符
%s 输出字符串
%o 以八进制的形式输出
%x 以十六进制的形式输出
%p 输出地址
域宽问题(md%):
m 可为正,也可为负。
如果要输出的数的位数 > 域宽m ,则按照数据的实际位数输出。
如果要输出的数的位数 < 域宽m 要补空格:m > 0 从左侧开始补空格,m < 0 从右侧开始补空格。
%0md表示 不足部分补0,例如有输出01、02、03等格式要求时使用。
%f输出精度问题:
float类型的变量,%f打印出来的精度:有效数字是7位,默认小数点后6位,如果小数部分不足6位,补零。
double类型的变量,%f打印出来的精度:有效数字是15位,默认小数点后6位,如果小数部分不足6位,补零。
%m.nf,m表示总的列数(包括小数点所占的列),n表示小数点后的位数,通常我么会以%.nf的形式来控制输出小数的位数。
四、scanf函数:标准的库函数,使用时要包含头文件:#include <stdio.h>
注意点:
格式控制符不允许写%m.nf,但是可以写成%mf,一般我们直接使用%f的控制格式进行输入。
以%d的格式输入时,在输入值之前,如果输入了空格、回车、 tab都会被忽略。
scanf运行的原理:用户输入的内容会被存放到scanf的输入缓冲区中,然后scanf函数会根据格式控制符的要求,从输入缓冲区依次选取,如果取得的内容和我们的格式要求一致,则把值存放到变量中,如果格式不一致,则不修改变量的值。另外如果scanf缓冲区中有内容,则scanf不会提示我们再次输入。
int a =-1,b=-1;
char ch='a';
scanf("%d",&a);
scanf("%c",&ch);
scanf("%d",&b);
printf("%d,%c,%d",a,ch,b);
对于此段代码如果我们输入:13 回车 a 回车12,输出结果将会是13, ,-1 原因就是scanf从输入缓冲区依次读取到的是13 \n a 再结合scanf运行的原理自然会得到13, ,-1的输出结果。 针对这个问题我们可以在char ch='a';后面加上 scanf("%c",&ch);来吸收13后面的\n,从而打印出我们期望的结果:13,a,12
如果整型和字符型混合输入的时候,建议使用加上逗号的形式,例如scanf("%d,%c,%d",&a,&ch,&b); 。
http://www.itheima.com
一、C语言数据类型;
1分类:基本类型、构造类型、指针类型、空类型。
1.1基本数据类型又分为:整型(短整型、整型、长整型)、实型(单精度型、双精度型)、字符型、枚举型。
1.2构造类型又分为:数组类型、结构体类型、共用体类型。
2.数据类型决定了数据在内存中占用的字节数以及取值范围。
二、常量与变量
1.常量:值不能被改变的量(常数)。
1.1.分类:整型常量(2,-2)、实型常量(2.2,-2.31)、字符常量(‘a’)、字符串常量“abc”、符号常量。
1.1.1符号常量:用标识符代表的常量,一般用大写字母表示,例如在宏定义时的应用。#define PI 3.14 其中PI就是一个符号常量。
2.标识符:所谓标识符就是在程序中定义的一些名称,例如变量名、函数名、数组名、符号常量名、文件名等。
2.1分类:关键字、预定义标识符、用户标识符。
2.2命名规则:由字母、数字、下划线、美元符号$组成;首字母不能是数字;不能与关键字同名;严格区分大小写。
2.3规范内容:起一个有意义的名称,见名知义;如果一个标示符有多个单词组成,第一单词的首字母小写,其他单词的首字母都大写,或者所有的单词的首字母都大写。
3.变量:值可以改变的量。
注意点:
严格遵守标识符的命名规范,变量名不能同名;
变量名和变量值的区别:我们定义变量时会在内存中开辟一个空间,变量名实为该空间一个符号地址,变量值存储在该空间内;
变量定义以后,是有值的,为了防止变量的原来的值对我们的程序产生影响,我们要初始化也就是给变量赋初值;
变量使用:等号的左侧必须是一个变量,一定不能写一个常量,等号的右侧可以是变量、常量、表达式;
作用域:变量作用域可以理解为变量可以使用的范围,变量按照作用域分为局部变量和全局变量;在函数的内部或者代码块的内部定义的变量,称为局部变量,其作用域从局部变量定义的位置开始,到它所在的代码块或者函数体的“}”为止,在代码块的内部可以定义和块外部同名的变量,此时块内部的变量会暂时屏蔽块外部的变量的作用域;在函数的外部定义的变量是全局变量,从定义的位置开始,到文件末尾,在不同的函数中都可以使用。
三、printf函数:标准的库函数,使用时要包含头文件:#include <stdio.h>
格式控制符:
%d 输出十进制的整
%f 输出实型的数
%c 输出字符
%s 输出字符串
%o 以八进制的形式输出
%x 以十六进制的形式输出
%p 输出地址
域宽问题(md%):
m 可为正,也可为负。
如果要输出的数的位数 > 域宽m ,则按照数据的实际位数输出。
如果要输出的数的位数 < 域宽m 要补空格:m > 0 从左侧开始补空格,m < 0 从右侧开始补空格。
%0md表示 不足部分补0,例如有输出01、02、03等格式要求时使用。
%f输出精度问题:
float类型的变量,%f打印出来的精度:有效数字是7位,默认小数点后6位,如果小数部分不足6位,补零。
double类型的变量,%f打印出来的精度:有效数字是15位,默认小数点后6位,如果小数部分不足6位,补零。
%m.nf,m表示总的列数(包括小数点所占的列),n表示小数点后的位数,通常我么会以%.nf的形式来控制输出小数的位数。
四、scanf函数:标准的库函数,使用时要包含头文件:#include <stdio.h>
注意点:
格式控制符不允许写%m.nf,但是可以写成%mf,一般我们直接使用%f的控制格式进行输入。
以%d的格式输入时,在输入值之前,如果输入了空格、回车、 tab都会被忽略。
scanf运行的原理:用户输入的内容会被存放到scanf的输入缓冲区中,然后scanf函数会根据格式控制符的要求,从输入缓冲区依次选取,如果取得的内容和我们的格式要求一致,则把值存放到变量中,如果格式不一致,则不修改变量的值。另外如果scanf缓冲区中有内容,则scanf不会提示我们再次输入。
int a =-1,b=-1;
char ch='a';
scanf("%d",&a);
scanf("%c",&ch);
scanf("%d",&b);
printf("%d,%c,%d",a,ch,b);
对于此段代码如果我们输入:13 回车 a 回车12,输出结果将会是13, ,-1 原因就是scanf从输入缓冲区依次读取到的是13 \n a 再结合scanf运行的原理自然会得到13, ,-1的输出结果。 针对这个问题我们可以在char ch='a';后面加上 scanf("%c",&ch);来吸收13后面的\n,从而打印出我们期望的结果:13,a,12
如果整型和字符型混合输入的时候,建议使用加上逗号的形式,例如scanf("%d,%c,%d",&a,&ch,&b); 。
相关文章推荐
- 黑马程序员——Foundation框架——NSMutableArray常用方法
- Java程序员的现代RPC指南
- Java程序员的现代RPC指南
- 黑马程序员-Java中基本类型对应的类(装箱与拆箱)
- 黑马程序员——Foundation框架——NSArray常用方法
- 黑马程序员---IO2(缓冲区、装饰设计模式、转换流)
- 黑马程序员——C基础---数组
- 黑马程序员——Foundation框架——NSMutableString常用方法
- 黑马程序员——Java重点基础之集合框架(一)
- 黑马程序员------set和TreeSet的使用和原理
- 黑马程序员--java基础-方法重载与数组
- 115个Java面试题和答案(下)
- 115个Java面试题和答案(上)
- 黑马程序员------小练习
- 黑马程序员_简单实用 ,客户端跟服务器进行数据传输的结束标记 ,特别是被老师洗脑太深的,不看别后悔。
- 程序员必须了解的内存知识
- 程序员学习能力提升三要素
- 优秀程序员的七大特征,你具备几条?
- 优秀程序员的七大特征,你具备几条?
- 黑马程序员__Java多线程Thread