C语言学习笔记二---数据类型运算符与表达式
一.C的基本语法单位
1.标识符:有效长度:31(DOS环境下)
2.关键字:main不是
3.分隔符:空格符,制表符,换行符,换页符
4.注释符:a./*.....*/ b.//
二.C的常用输入/输出函数
1.printf:
a.格式:
printf("输出格式",输出项序列)
例子:
printf("%d",5,6); //输出结果为5,但格式错误,不建议这样写
类型 | 格式字符串 | 输出形式 |
整型 |
%d %o %x或%X %u |
带符号的十进制形式(正数不输出符号+) 无符号的八进制形式(不输出前导符号0) 无符号的十六进制形式(不输出前导符号0x或0X) 无符号的十进制形式 |
浮点型 |
%f %e或%E %g或%G |
小数形式,默认小数位数为6位 指数形式,数字部分默认位6位 优化的小数或指数形式(去掉无意义的0后所占宽度较水的1种) |
字符型 |
%c %s |
单个字符形式(不输出‘) 字符串(不输出“) |
字符 | 功能 |
%md | ...... |
%.nd |
对实数:指定小数点后位数(四舍五入) |
%-md | .... |
%+md | 指定在有符号数的正数前显示+号 |
%0md | 输出数值时指定左面的空位置自动填0 |
%#o %#x |
在八进制和十六进制数前显示前导0,0x |
%ld %lf..... |
..... |
2.scanf:
注:
1.scanf可以指定输入数据所占有的列数,系统自动按他截取所需数据
如:scanf(”%3d%3d",&a,&b);
输入123456 --->a=123,b=456
2.如果在%后面有一个*附加符,表示本输入项输入后不传给任何量
如:scanf("%2d %*3d %2d",&a,&b);
输入:12 345 67 -->a=12,b=67
3.输入数据时,不能规定精度
如:scanf("%7.2d",&a) ; ×
4.输入字符时,每一个字符变量只能容纳一个字符
如 scan("%3c",&a);
输入:asc -->a='a';
3.getchar:
c=getchar();
4.putchar
putchar(c);
三.数据类型
1.基本数据类型
a.整型常量:BC中int的值域为-32768~32767
unsigned int : 0~65535
char: -128~127
unsigned char: 0~255
b.浮点型常量:
浮点数后缀:f/F,l/L.(浮点数总是有符号的,故无u或U后缀)
c.字符型常量: 分为转义字符和普通字符
d.字符串常量:
e.符号常量
#define PI 3.14159
注释:位,字节,字长,字
位(Bit):计算机数据的最小单位,表示一个二进制数码0或1.
字节(Byte):八个二进制位构成1个字节,一个字节可以存储一个英文字母或者半个汉字
字长:CPU在单位时间内能一次处理的二进制数的位数
字:8位CPU字长为8位,一个字=1个字节,一次只能处理1个字节,32位CPU字长为32位,一个字=4个字节,一次只能处理4个字节
四.运算符
1. 算术运算符:+,-,*,/,%
2.赋值运算符:=,复合赋值运算符:+=,-=,*=,/=,%=
3.关系运算符:<,>,<=,!=,==,>=
4.逻辑运算符:&&,||,!
例子:
int a,b,c; a=b=c=; ++a||++b&&++c; printf("b=%d\n",b);
输出:b=1
++a||++b&&++c; =======++a||(++b&&++c); 优先级:&&>||
后面的逻辑表达式本来是先算&&再算||
但是最终还是算||,||中当左边表达式为真时就不会计算右边表达式
所以只运算++a,所以结果是a=2,b=1,c=1
5.自增自减:++,--
例子:
double b=1.25;
b++; ( √)
#define d 2
d++; (×)
6.条件运算符:? :
7.逗号表达式: , , , ,
8.位运算: &,|,^,<<,>>,~
五.类型转换
1.自动类型转换:
a.三种自动类型转换的情况:
(1).当双目运算符的两个运算量结果的类型不相同且进行算术运算时
(2).当一个值赋予一个不同类型的变量时
赋值运算时的自动类型转换(隐式转换)
赋值转换将右值表达式的结果的类型转换成左值表达式的数据类型(强制性)
例子:
int a=,b=,c; c=a/b+0.4;
结果:c=1
(3).调用函数实现数据类型转换
b.转化规则:
值域较窄的类型向值域较宽的转化
c.转换方向图:
short,char->int->unsigned->long->unsigned long->double->long double
↑
float
注意:故意转换不安全
例子:1.5-7/2+4.3+5%2=1.5-3+4.3+1=3.8
2.强制类型转换(显式转换)
a.一般形式: (类型名)表达式;
b.作用:将表达式转换为类型名所指定的类型
例子:
float x=6.5;
int y=(int)x;
3.运算符的优先级:
运算符的优先级决定了运算顺序,结合性决定了运算是从左到右还是从右到左。
优先级:()>++ =-- =! = ~ =单目+ =单目- = 强制类型转换 =sizeof >"*,/,%" >"+ , -"> " >>,<<" > ">,>=,< ,<=" > "==,!=" >& >^ > | > && > || > ? : >赋值运算符 > ,
关于BC中长整型的讨论:
printf("%d\n",*******);
//输出: -25216 %d改为%u : 40320 √
//另一种选择 :
double j=1.0*2*3*4*5*6*7*8*9*10;
printf("%.0f",j);
//printf("%ld\n",1*2*3*4*5*6*7*8); ×
原因:
2 bytes : %d -32768~32767 %u 0~65535
40320<==>0x9d80<==> 1001 1101 1000 0000(-25216的补码)
-25216<==> -110 0010 1000 0000
另一个错例:
long j=1*2*3*4*5*6*7*8;
printf("%ld",j);
改进:
j=1*2*3*4*5*6*7*8(L);
or j=(long)1*2*3*4*5*6*7*8; 最实用
or printf("%ld",1*2*3*4*5*6*7*8L);
C语言学习笔记二---数据类型运算符与表达式的更多相关文章
- Go语言学习笔记二: 变量
Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...
- Go语言学习笔记四: 运算符
Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...
- (C/C++学习笔记) 二. 数据类型
二. 数据类型 ● 数据类型和sizeof关键字(也是一个操作符) ※ 在现代半导体存储器中, 例如在随机存取存储器或闪存中, 位(bit)的两个值可以由存储电容器的两个层级的电荷表示(In mode ...
- C语言学习笔记二
第二章 数组 一,定义: 数组是有序数据的结合,同一数据类型 整型数组 int arr[10]={0,1,2,4,5,6,7,8,9}; 字符数组 char str[6]={'h',' ...
- 【GO】GO语言学习笔记二
基本类型: 布尔型:boolean 整型:int8,byte,int16,int,uint,uintptr等 浮点型:float32,float64 复数类型:complex64,complex128 ...
- Go语言学习笔记(二) [变量、类型、关键字]
日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号. 2.Go 同其他语言不同的地方在于变 ...
- [C语言学习笔记二] extern 函数的用法
extern 用来定义一个或多个变量.其后跟数据类型名和初始值.例如: extern int a =10 它与 int,long long int,double,char的本质区别,在于 extern ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 算术运算符 下表显示 ...
- python学习笔记二 数据类型(基础篇)
Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上 ...
随机推荐
- Python方法函数记录
目录 python 控制台输出的内容保存到txt 文件 eval函数使用 python 控制台输出的内容保存到txt 文件 import sys class Logger(object): def _ ...
- 区间dp 能量项链 洛谷p1063
题目大意:如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为 (Mars单位),新产生的珠子的头标记为m,尾标记为n. 需要时,Mars人就用吸盘夹住 ...
- 入门大数据---Elasticsearch搭建与应用
项目版本 构建需要: JDK1.7 Elasticsearch2.2.1 junit4.10 log4j1.2.17 spring-context3.2.0.RELEASE spring-core3. ...
- TCP协议粘包问题详解
TCP协议粘包问题详解 前言 在本章节中,我们将探讨TCP协议基于流式传输的最大一个问题,即粘包问题.本章主要介绍TCP粘包的原理与其三种解决粘包的方案.并且还会介绍为什么UDP协议不会产生粘包. 基 ...
- Python实用笔记 (22)面向对象编程——实例属性和类属性
由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...
- 如何使用ABP进行软件开发之基础概览
ABP框架简述 1)简介 在.NET众多的技术框架中,ABP框架(本系列中指aspnetboilerplate项目)以其独特的魅力吸引了一群优秀开发者广泛的使用. 在该框架的赋能之下,开发者可根据需求 ...
- 001_Linux常用命令之ls命令
1. 认识Linux系统目录结构 /bin 可执行文件所在目录 /media 挂载设备媒体,u盘,光驱等 /mnt 该目录主要是为了让用户挂在别的文件系统(挂在自己的u盘) /usr unix sys ...
- AJAX 调用WebService 、WebApi 增删改查(笔记)
经过大半天努力,终于完成增删改查了!心情有点小激动!!对于初学者的我来说,一路上都是迷茫,坑!!虽说网上有资料,可动手起来却不易(初学者的我).(苦逼啊!) WebService 页面: /// &l ...
- windows 下搭建 MQTT 服务
1.首先搭建起MQTT服务 1.1安装mosquitto,mosquitto是开源的MQTT代理服务器,它的Windows安装包地址:https://mosquitto.org/download/ 1 ...
- 2020年的六种编程语言排名中,java排第几只有不到1%的人知道
前言 编程语言是开发的基础.有不同的类型和特征,并且开发人员针对不同的场景选择正确的语言,但是您知道使用哪种语言吗?中国和世界各地有多少开发人员正在使用它?他们的排名是多少?快来看看您知道多少个列表! ...