黑马程序员————C语言——基本语法2
来源:互联网 发布:s7总决赛 知乎 编辑:程序博客网 时间:2024/05/15 12:07
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、变量的内存分析
1> 内存以“字节为单位”
0x表示的是十六进制
2> 不同类型占用的字节是不一样的,数据越大,所需的字节数就越多
2、变量的存储
1> 所占用字节数跟类型有关,也跟编译器环境有关
2> 变量实例
int b = 10;
int a = 20;
内存由大到小寻址,优先分配内存地址较大的字节给变量。b的内存地址比a大, 每个变量都有地址:第一个字节的地址就是变量的地址。
3> 查看内存地址:
int a;
printf("a的地址是:%p\n", &a);
4> 注意
在变量未经初始化之前,不要尝试使用变量的值
int a;
printf("a的值是:%d\n", a);
上面的写法是不建议的
二、输入和输出函数
1、输入printf()函数
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。
格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
在Turbo C中格式字符串的一般形式为:
[标志][输出最小宽度][.精度][长度]类型 其中方括号[]中的项为可选项。
各项的意义介绍如下:
1)类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示
格式字符
意 义
d
以十进制形式输出带符号整数(正数不输出符号)
o
以八进制形式输出无符号整数(不输出前缀0)
x,X
以十六进制形式输出无符号整数(不输出前缀Ox)
u
以十进制形式输出无符号整数
f
以小数形式输出单、双精度实数
e,E
以指数形式输出单、双精度实数
g,G
以%f或%e中较短的输出宽度输出单、双精度实数
c
输出单个字符
s
输出字符串
2)标志:标志字符为-、+、#、空格四种,其意义下表所示:
标 志
意 义
-
结果左对齐,右边填空格
+
输出符号(正号或负号)
空格
输出值为正时冠以空格,为负时冠以负号
#
对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e,g,f类当结果有小数时才给出小数点
3)输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
4)精度:精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
5)长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
#include <stdio.h>int main(){ int a=15; float b=123.1234567; double c=12345678.1234567; char d='p'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,%8c\n",d,d); return 0; }
2、输出scanf()函数
1>与printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
2>简单用法
int age;
scanf("%d", &age);
scanf函数时,会等待用户的键盘输入,并不会往后执行代码。scanf的第1个参数是"%d",说明要求用户以10进制的形式输入一个整数。这里要注意,scanf的第2个参数传递的不是age变量,而是age变量的地址&age,&是C语言中的一个地址运算符,可以用来获取变量的地址。输入完毕后,敲一下回车键,目的是告诉scanf函数我们已经输入完毕了,scanf函数会将输入的值赋值给age变量。
3>其他用法
(1)用scanf函数接收3个数值,每个数值之间用中划线-隔开
scanf("%d-%d-%d", &a, &b, &c);
3个%d之间是用中划线-隔开的,因此我们在每输入一个整数后都必须加个中划线-,比如这样输入,不然在给变量赋值的时候会出问题
注意:数值之间的分隔符是任意的,不一定要用中划线-,可以是逗号、空格、星号*、井号#等等,甚至是英文字母
// 逗号,
scanf("%d,%d,%d", &a, &b, &c); // 输入格式:10,14,20
// 井号#
scanf("%d#%d#%d", &a, &b, &c); // 输入格式:10#14#20
// 字母x
scanf("%dx%dx%d", &a, &b, &c); // 输入格式:10x14x20
(2)用scanf函数接收3个数值,每个数值之间用空格隔开
scanf("%d %d %d", &a, &b, &c);
3个%d之间是用空格隔开的,我们在每输入一个整数后必须输入一个分隔符,分隔符可以是空格、tab、回车
三、算术运算
C语言一共有34种运算符,包括了常见的加减乘除运算
1. 加法运算+
除开能做加法运算,还能表示正号:+5、+90
2. 减法运算-
除开能做减法运算,还能表示符号:-10、-29
3. 乘法运算*
注意符号,不是x,而是*
4. 除法运算/
注意符号,不是÷,也不是\,而是/
整数除于整数,还是整数。1/2的值是0,这个并不是二分之一
5. 取余运算%
什么是取余:两个整数相除之后的余数
%两侧只能是整数
正负性取决于%左侧的数值
6. 注意点
1> 自动类型转换
int a = 10.6;
int b = 10.5 + 1.7;
自动将大类型转换为了小类型,会丢失精度
2> 自动类型提升
int b = 10.5 + 10;
将右边的10提升为了double类型
double b = 1.0 / 2;
解决除法的精度问题
3> 强制类型转换
double a = (double)1 / 2;
double b = (double)(1 / 2);
4> 运算顺序
表达式
结合性(结合方向):2+3+4
优先级:5+4*8-3
- 黑马程序员——06C语言基本语法
- 黑马程序员————C语言——基本语法2
- 黑马程序员——OC语言(一)--基本语法
- 黑马程序员——6、OC语言(基本语法)
- 黑马程序员——OC语言基本语法
- 黑马程序员——OC语言------基本语法
- 黑马程序员————C语言——基本语法3
- 黑马程序员——05C语言语法和mac基本快捷键使用
- 黑马程序员——C语言基础语法--scanf函数、基本运算、流程控制
- 黑马程序员——C语言基础语法、基本运算理论
- 黑马程序员—C语言—基本语法printf与scanf
- 黑马程序员——Objective-C——基本语法
- 黑马程序员—Objective-C基础_基本语法
- 黑马程序员—C语言笔记—了解Mac的基本使用和C语言基础语法
- 黑马程序员——C语言——基础语法
- 黑马程序员——1、C语言(基础语法)
- 黑马程序员——C语言基础篇---基础语法
- 黑马程序员——C语言基础---基础语法
- 闪讯1.2.16.20、闪讯1.2.17.23开不了猎豹wifi的解决方法:
- VS2010产品密匙
- Spark1.0.0 源码编译和部署包生成
- JAVA NIO(二)基础 内存管理 文件锁定 Socket服务器客户端通信
- Understanding the p-value - Statistics Help
- 黑马程序员————C语言——基本语法2
- ironic workflow---debug and changing (2)
- spark1.3.0__for_hadoop2.4.1编译、安装与初步测试
- Apply Android Material Design Tips
- css3
- LeetCode(188) Best Time to Buy and Sell Stock IV
- springmvc+spring+mybatis 整合
- 使用DevExpress.XtraReports.UI.XtraReport 设计报表的时候如何格式化字符串
- 文本分类中遇到的小问题总结