一.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语言学习笔记二---数据类型运算符与表达式的更多相关文章

  1. Go语言学习笔记二: 变量

    Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...

  2. Go语言学习笔记四: 运算符

    Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...

  3. (C/C++学习笔记) 二. 数据类型

    二. 数据类型 ● 数据类型和sizeof关键字(也是一个操作符) ※ 在现代半导体存储器中, 例如在随机存取存储器或闪存中, 位(bit)的两个值可以由存储电容器的两个层级的电荷表示(In mode ...

  4. C语言学习笔记二

    第二章 数组 一,定义: 数组是有序数据的结合,同一数据类型 整型数组     int arr[10]={0,1,2,4,5,6,7,8,9}; 字符数组     char str[6]={'h',' ...

  5. 【GO】GO语言学习笔记二

    基本类型: 布尔型:boolean 整型:int8,byte,int16,int,uint,uintptr等 浮点型:float32,float64 复数类型:complex64,complex128 ...

  6. Go语言学习笔记(二) [变量、类型、关键字]

    日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号.   2.Go 同其他语言不同的地方在于变 ...

  7. [C语言学习笔记二] extern 函数的用法

    extern 用来定义一个或多个变量.其后跟数据类型名和初始值.例如: extern int a =10 它与 int,long long int,double,char的本质区别,在于 extern ...

  8. 吴裕雄--天生自然C++语言学习笔记:C++ 运算符

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 算术运算符 下表显示 ...

  9. python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建         不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上 ...

随机推荐

  1. 暑假集训Day 4 P4163 [SCOI2007]排列 (状压dp)

    状压dp (看到s的长度不超过10就很容易想到是状压dp了 但是这个题的状态转移方程比较特殊) 题目大意 给一个数字串 s 和正整数 d, 统计 s 有多少种不同的排列能被 d 整除(可以有前导 0) ...

  2. 【树形dp】Bzoj 1040骑士

    Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火 ...

  3. JavaScript基础函数的配置对象Configuration Objects(020)

    配置对象通常用在API库的实现中,当程序中需要编写要多次的模块,也可以采用这种模式.这种模式的好处是接口明确,扩展方便.比如,一个 addPerson在设计的最初需要两个参数作为初始化时人的姓名: f ...

  4. AI 开发路漫漫,什么才是真正的极客精神?

    摘要:AI开发看上去很美,实践起来却不是一件容易的事.一个聪明的开发者知道借助工具提升开发效率,一个智能的平台则会站在开发者的立场,为用户提供贴心服务. 前言 “理想很丰满,现实很骨感.”如果用一句话 ...

  5. 大厂前端带来css3动画transition的使用和介绍全新认识动画

    CSS3中可以使用transition来做最简单动画效果,transition表示到一个元素的属性值发生变化时,我们可以看到页面元素从旧的属性慢慢变化为新的属性值的过程,这种效果不是立即变化的,而是体 ...

  6. box-shadow,text-shadow

    box-shadow:inset 30px 40px 20px #f00; 如上实例,总共五个参数,其中第一个代表阴影是向内阴影还是向外阴影,第二个参数代表向右(从左向右)的偏移量,第三个参数代表向下 ...

  7. 多线程01-CAS (CompareAndSwap)

    1.基本概念 原子性是不可中断的最小操作:在Java中,一般通过加锁或者自旋CAS方式来确保原子操作: 而CAS(compareAnd swap)作为Java中常用的保证原子性的手段,JDK1.5之后 ...

  8. 富文本编辑器实现从word中复制图片(外挂)

    1问题 基于web的富文本编辑器的功能普遍较弱,而word是公认的宇宙第一好用的文档编辑器,所以许多人都习惯先在word中编辑,然后再将内容粘到web富文本编辑器中. 但是,这种操作有一个问题:图片带 ...

  9. P2585 三色二叉树 题解

    题目 一棵二叉树可以按照如下规则表示成一个由0.1.2组成的字符序列,我们称之为"二叉树序列S": \[S=\left\{ \begin{aligned} 0 &\ \ 表 ...

  10. Fetch.AI的最新发布speaks your language

    更新增强长期网络的稳定性 包括新的Etch功能,使我们的代码比以往对开发人员更加友好.我们现在支持太阳下的每一种语言,包括普通话,希腊语和希伯来语-甚至表情符号 介绍我们很高兴地宣布我们最新的技术更新 ...