当前位置: 首页 > news >正文

《C程序设计语言》笔记 (二)类型运算符与表达式

变量和常量是程序处理的两种基本数据对象

声明语句说明变量的名字及类型,也可以指定就是的初值

运算符指定将要进行的操作,表达式则把变量与常量组合起来生成新的值

所有整形都包括signed和unsigned两种形式

 

2.1变量名

变量名是由字母和数字组成,但其第一个字符必须为字母。

下划线"_"也被看作是字母,通常用于命名较长的变量名

由于库例程的名字通常以下划线开头,因此变量名不要以下划线开头

变量名使用小写字母,常量名全部使用大写字母

 

2.2 数据类型及长度

//C语言只提供下列几种基本数据类型

char 字符型,占用一个字节,可以存放本地字符集中的一个字符

int 整形,通常反映了机器中整数的最自然长度

float 单精度浮点数
double 双精度浮点数

此外,还可以在这些基本数据类型的前面加上一些限定符
short与long两个限定符用于限定整形:
short int sh;
long int counter;
关键字int可以省略。

short与long的引入可以为我们提供满足实际需要的不同长度的整形数
signed与unsigned可用于限定char类型或任何整形

 

2.3常量

类似于1234的整数常量属于int类型
long类型的常量以字母l或L结束,如123456L
如果一个整数太大以至于无法用int表示时,也将被当作long处理

无符号常量以字母u或U结尾。

后缀ul或UL表明是unsigned long类型

一个字符常量是一个整数,书写时将一个字符括在单引号中

\a 响铃符
\b 回退符
\f 换页符
\n 换行符
\r 回车符
\t 横向制表符
\v 纵向制表符

字符常量'\0'表示值为0的字符,也就是空字符(null)

我们通常以'\0'的形式代替0

常量表达式是仅仅只包含常量的表达式。这种表达式在编译时求值,而不在运行时求值

字符串常量也叫字符串字面值,是用双引号括起来的0个或多个字符组成的字符序列

从技术的角度看,字符串常量就是字符数组

字符串的内部表示使用一人空字符'\0'作为串的结尾

 

 2.4声明

所有变量都必须先声明后使用,尽管某些变量可以通过上下文隐式的声明

声明变量的同时可以进行初始化

如果变量不是自动变量,则只能进行一次初始化操作,从概念上讲,应该是在程序开始执行之前进行,并且初始化的表达式必须为常量表达式

每次进入函数或程序块时,显式初始化的自动变量都将被初始化一次。

任何变量的声明都可以使用const限定符限定

const限定变量的值不能被修改,对数组而言,const限定数组所有元素的值都不能被修改

 

2.5算术运算符

二元算术符包括: + - * / % .

取模运算符不能应用于float或double类型。

 

2.6关系运算符与逻辑运算符

关系运算符包括:

>  >=  <  <= 它们具有相同的优先级

==  != 优先级更低点

逻辑运算符&&与||有一些较为特殊的属性。

由&&与||连接的表达式按从左到右的顺序进行求值 ,并且,在知道结果为真或假后立即停止运算

 

2.7类型转换

自动转换是指把"比较窄的"操作数转换为"比较宽的"操作数。并且不丢失信息的转换。

将字符类型转换为整形时,需要注意一点

C语言没有指定char类型的变量是无符号还是带符号变量

当把一个char类型的值转换为int类型时,其结果有没有可能 为负数?对不同的机器,结果不同

 

2.8自增与自减

C语言提供了两个用于变量递增与递减的运算符。
自增
++使操作数递增1
自减
--使操作数递减1
它们既可以用作前缀运算符,也可以用途后缀运算符

 

2.9按位运算符

C语言提供了6个位操作运算符。这些运算符只能用于整形操作数。

& 按位与

| 按位或

^ 按位异或

<< 左移

>> 右移

~ 按位求反

按位与运算符&经常用于屏蔽某些二进制位

按位或运算符|常用于将某些二进制位置为1

按位异或运算符^当两个操作数的对应位不相同时将该位设置为1,否则设置为0

移位运算符<<与>>分别用于将运算的左操作数左移与右移

移动的位数则由右操作数指定。

x<<2 表示将x左移2位,右边空出的2位用0填补

在对unsigned类型的无符号值进行右移时,左边空出的部分将用0填补

当对signed类型的带符号值进行右移时,某些机器将对左边空出的部分用符号位填补,而另一些机器则用0填补

一元运算符~用于求整数的二进制反码,即分别将操作数各二进制0变1,1变0

 

转载于:https://www.cnblogs.com/dafume/p/7784890.html

相关文章:

  • 怎么在页面中引入外部模板
  • django--权限管理day1
  • Alpha 冲刺 (7/10)
  • 找零问题
  • 自动化java+webdriver常用的一些脚本
  • 一些 Ubuntu 使用的小技巧
  • java 单点登录机制
  • 最长上升子序列nlogn算法
  • JAVA配置环境
  • C# 后台模拟请求一般处理程序
  • Windows平台,Oracle Database和Client并存方式
  • tomcat乱码问题1 (
  • Mysql集群讲解(五) 多主多从环境搭建
  • Oracle导出数据中的prompt,set feedback 等是什么意思
  • 【朝花夕拾】朝花夕拾-Robot Framework实战演练之开篇
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 2017届校招提前批面试回顾
  • canvas 高仿 Apple Watch 表盘
  • EventListener原理
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript设计模式之工厂模式
  • Linux CTF 逆向入门
  • MySQL QA
  • RxJS: 简单入门
  • 百度小程序遇到的问题
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 简单易用的leetcode开发测试工具(npm)
  • 入口文件开始,分析Vue源码实现
  • 【云吞铺子】性能抖动剖析(二)
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (论文阅读40-45)图像描述1
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 未来三学期想要修的课 (日記)
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .net 按比例显示图片的缩略图
  • .NET命名规范和开发约定
  • .NET是什么
  • .net中生成excel后调整宽度
  • ?.的用法
  • @vue/cli 3.x+引入jQuery
  • [ JavaScript ] JSON方法
  • [04] Android逐帧动画(一)
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [HackMyVM]靶场Crossbow
  • [Java]快速入门优先队列(堆)手撕相关面试题
  • [JavaWeb]—Spring入门
  • [Linux] 常用命令--版本信息/关机重启/目录/文件操作