第二章常量、变量、类型转换<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1常量
1)  数字常量:(包括整型常量(十/八/十六进制)、浮点型常量)
整型常量(八进制前缀加0;十六进制前缀加0x);
根据长度整型常量又可分为(长整型(后缀加L)、短整型、无符号型(后缀加u))
下面我们来看一下这个程序:
#include <stdio.h>
int main()
{
printf("%d\t%x\t%o\n",29,29,29);
printf("%d\t%x\t%o\n",025,025,025);
printf("%d\t%x\t%o\n",0x1a,0x1a,0x1a);
printf("%u\t%1d\n",47675u,742611);
getchar();
}
结果为:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

我们来解释一下:\n表示换行;
%d表示按照十进制输出;
\t表示水平制表;
%x表示按照十六进制输出;
%o表示按照八进制输出;
%u表示按照无符号整数输出;
%1d表示按照长整数输出(1用于说明符d,o,x之前表示长整数;用于e,f,g之前表示双精度浮点数)。
浮点常量(实型常量)可表示为(十进制小数形式和指数形式)
十进制小数合法表示有(0.567  567.0  .567  567.)
指数表示形式(该表示形式必须包含字母E/e,在之母e前必须有数字,在字母e后得数字必须为整数(正负皆可))。格式如下:
{整数部分}.{小数部分}e{指数部分}(整数部分省略时,但小数点和小数部分必须有。有整数部分时,可以省略小数点和小数部分。)
我们来看这个程序:
#include <stdio.h>
int main()
{
printf("%f\t%e\t%g\n",12e3,12.3,12.3);
printf("%f\t%e\t%g\n",12.3456,12.3456,12.3456);
printf("%f\t%.2f\t%f\n",12.3,12.345,123);
getchar();
}
结果为:

我们来解释一下:\n表示换行;
%f表示按照浮点数(小数型)输出;
\t表示水平制表;
%e表示按照浮点数(指数型)输出;
%g表示按照e和f中较短的一种输出;
%2f表示按照长整数输出(2用于说明符d,o,x之前表示长整数;用于e,f,g之前表示双精度浮点数)。
2)  字符常量(字符常量、字符串常量)
字符常量:由单引号括起来的一个字符组成。(字符常量是具有数值的,即ASCII码值。可参与加减运算。)
我们来看下面一个程序:
#include <stdio.h>
int main()
{
printf("%c,%d\n",67,'m');
printf("%c,%c,%c\n",'a','\b','b');
printf("%c,%c,%c\n",'a','\r','b');
printf("%c%c",'\a','\007');
getchar();
}
输出结果为:

很奇怪啊,应该输出四行啊。怎么只有三行?
我们来解释一下:
第一行  
%c表示输出单个字符,大写c的ASCII码值为67所以输出C;
%d表示按照十进制输出,字符m的ASCII码值为109;
第二行
因为%c按照字符输出所以‘a’,‘b’就输出a,b
‘\b’表示退格,在输出退格后屏幕上输出a,接着输出b
第三行
‘\r’表示回车,在前面输出a,后,执行‘\r’光标移到该行首列,即a处,这时输出控制字符创的第二个逗号,将字符a改为逗号,在输出b。
第四行
‘\a’是机器的鸣铃,‘\007’还是鸣铃。
字符串常量(由“”括起来的字符序列。)
字符实际上是一个整型数,字符串实质上是个地址值

3)  符号常量(用一个标识符来代表一个常量)
符号常量在使用之前要先定义,格式如下:
#define {符号常量名}(常量)
符号常量名长用大写
举个例子:
#include <stdio.h>
#define PI 3.1415926
#define R 2
int main()
{
double zhouchang,area;
zhouchang=2.0*PI*R;
area=PI*R*R;
printf("zhouchang=%1f,area=%1f\n",zhouchang,area);
getchar();
}
结果如下:

2变量(程序中值发生变化的量)(三要素:名称,类型,值。)
名称:变量必须先定义后使用,定义或说明变量时,要给出该变量的名字(大小写字母都行,应考虑变量的含义和使用目的)。
类型:(编译时系统根据变量类型分配相应的内存单元。)
1)  基本数据类型(整型(整型,长整型,短整型),浮点型(单精度浮点型,双精度浮点型),字符型)如:

基本数据类型定义格式如下:
int a,b,c;
2)  构造数据类型(由若干个相同或不同的基本数据类型变量按照不同规律组合成的。)
如数组,结构,联合,枚举。
3)  存储类(自动存储,寄存器存储,外部存储,静态存储)。
值:(变量要被赋值,或赋初值才能被使用。)
1)  赋值:将一个数值赋给变量,直到下次再被赋值为止。
2)  赋初值:在定义或说明变量时,将一个数值送给变量的。
float占4个字节,double占8个字节。
3数组(数目固定,类型相同的若干变量的有序集合)
1)数组定义格式如下:
{类型说明符}{数组名}【{常量表达式1}】【{常量表达式2}】。。。。
数组元素的表示如下:
{数组名}【{下标1}】【{下标2}】。。。(数组下标从0开始。
举个例子:
int a[3] 表示a数组中有3个元素:a[0],a[1],a[2]。
3)  数组的赋值
赋初值格式如下:
Static int a[5]={5,4,3,2,1}    其中(a[0]=5,a[1]=4,a[2]=3,a[3]=2,a[4]=1)
赋值格式如下:
int a[5],b[1][2];
a[0]=a[1]=a[2]=1;
a[3]=a[4]=0;
b[0][0]=3;
b[0][1]=2;
b[1][0]=9;
b[1][1]=8;
b[1][2]=4;
是不是有点麻烦?
其实还可以采用循环复制的方法:
for(i=0;i<6;i++)
a[i]=i+1;
这表示对a的6个元素分别赋值1,2,3,4,5,6。
注意!一下赋值方式是错误的:
int a[5];
a={1,2,3,4,5};
下面我们来看一个二维数组的赋值(这个比较常用)
#include <stdio.h>
int main()
{
int i,s=0;
static int b[3][3]={{6},{7,8}};
for(i=0;i<3;i++)
b[2][i]=i+1;
for(i=0;i<3;i++)
s+=b[i][i];
printf("%d\n",s);
getchar();
}
输出结果如下:
我们来分析一下:
首先我们把b[3][3]每个元素都列出来:
(b[3][3]={{6},{7,8}}其实就是b[3][3]={{6,0,0},{7,8,0},{0,0,0}}
b[0][0]=6,b[0][1]=0,b[0][2]=0
b[1][0]=7,b[1][1]=8,b[1][2]=0
b[2][0]=0,b[2][1]=0,b[2][2]=0)
for(i=0;i<3;i++)    #执行三次循环赋值;
b[2][0]=1,b[2][1]=2,b[2][2]=3
for(i=0;i<3;i++)
s+=b[i][i];    #把b[0][0]+b[1][1]+[2][2]的值赋给s
s=0+6+8+3=17)
数组除了有数字数组外,还有字符数组(数组内各元素是char类型的),定义和数字数组定义相同。
格式如下:
static char m[5]={‘a’,’b’,’c’,’d’,’\0’};等价于static char m[]=”abcd”;
我们来看下面两条语句:
Static char x[3]={‘a’,’b’,’\0’};
Static char y[3]={‘a’,’b’,’c’};
数组x中存放的是一个字符串“ab“,而数组y中存放的不是字符串,而是三个字符a,b,c
因为数组y的三个元素中没有结束符’\0’。
(如果将一个字符创常量在定义数组时赋初值给该数组,则该数组将存放所赋予的字符串,这时系统将自动给数组加一个’\0’作为结束符。
注意字符串有效数字加1后小于等于字符数组的元素个数。
总结一下:
1)  字符串的输入方法可以单个字符输入;
2)  字符串的输出方法可以单个字符输出,使用格式符%c,最终形成字符串形式,也可以使用%s一次输出字符串;
3)  使用格式符%c输出字符时,对应参数是数组元素名,使用格式符%s输出一个字符串时,对应参数是数组名,实际上是一个地址值;
4)  在使用格式符%s输出字符串时,实际上是从给定的地址开始逐一输出其存放的字符直到遇到’\0’为止。
4类型转换(自动转换,强制转换)
1)自动转换是根据规则自动进行转换的。
char和short转换成int
float转换成double
int->unsigned->long->double
2)强制转换
   格式如下:
({类型说明符})(表达式)
(double)(a+5)

转载于:https://blog.51cto.com/2948229/1157871

C语言基础教程读书笔记2(第二章常量、变量、类型转换)相关推荐

  1. C语言基础教程读书笔记5.2.(第五章函数和存储类2)

    4.作用域规则 标示符只能在说明或对他定义它的函数体或分程序内饰可见的,而在该函数体或分程序外则是不可见的. 举个例子: # include <stdio.h> int main() { ...

  2. Python基础教程学习笔记:第二章 列表和元组

    1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...

  3. python基础教程读书笔记——第三章 字符串

    第三章 字符串 摘要: %s , $x , find()  , join() , split() , lower() , title() , strip() 1.字符串格式化 format = &qu ...

  4. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...

  5. 嵌入式Linux基础教程-读书笔记

    waiting to be fixed. coming soon. +读书笔记: +linux kernel <Linux内核完全剖析基于0.12内核>.pdf 嵌入式Linux基础教程第 ...

  6. Objective-C基础教程读书笔记

    第二章 对C的扩展 1.#import,让编译器引入一次头文件(且仅引入一次). 2.@符号,Objective-C对C的扩展. 第三章 面向对象编程基础知识 1.中缀符(infix notation ...

  7. Objective-C基础教程读书笔记(8)

    第8章 Foundation Kit介绍 Objective-C是一门非常精巧实用的语言,目前我们还没有研究完它提供的全部功能.不过现在,我们先探索另一个方向,快速了解一下Cocoa中的Foundat ...

  8. Python基础教程读书笔记(第1章—第2章:基础知识、列表和元组)

    第一章 基础知识 1:Linux中安装 $apt-get install python ($为bash提示符) 2:数字和表达式:1/2 结果为0.from _future_ import divis ...

  9. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入&q ...

最新文章

  1. Jmeter接口测试踩过的坑,快来看鸭~
  2. 数据中心网络架构 — 云数据中心网络 — 大二层网络技术
  3. 常用各种芯片手册大全_【汇总】超全面!国内芯片60个细分领域知名代表企业...
  4. Jmeter之BeanShell
  5. LeetCode MySQL 1075. 项目员工 I
  6. 爱心的数学函数方程_高中数学中的函数与方程思想
  7. MySQL 到底能不能放到 Docker 里跑?
  8. Ubuntu环境下导入tensorflow弹出FutureWarning: Passing (type, 1)的解决办法
  9. 基于echarts+html+css+jq的数据可视化大屏展示炫酷看板[附源码]
  10. 扫码点餐外卖配送小程序开发功能
  11. Windows系统SVG图片预览插件
  12. 如何做AI开源项目?零基础到100star
  13. oracle+utl_file+shanchu,utl_file.fremove
  14. cmd无法加载命令解决方法
  15. python3爬取巨潮资讯网站年报数据
  16. PythonQt——yolov5手势识别隔空操纵车载音乐播放器
  17. 使用python导入Excel作图
  18. 使用Entry遍历map集合
  19. 设置apache可以让php在多个虚拟空间限制读写权限
  20. python网络数据爬取及分析_《Python网络数据采集》读后总结--第3章开始爬取数据及天善用户关系分析实例...

热门文章

  1. Redis-HyperLogLog
  2. LeetCode004-寻找两个正序数组的中位数(Median of two sorted arrays)-Rust语言实现
  3. 给,你要的Go学习路线图来啦
  4. STL_set/vector/deque
  5. 浅析ReentrantReadWriteLock读写锁
  6. 一对一直播社交聊天程序: JAVA中的Socket源码概述
  7. pt-heartbeat 监测RDS延迟
  8. Java锁的种类以及辨析
  9. Selenium定位HTML元素(Python)
  10. hdu 2037(今年暑假不AC)