【C语言】第二章 类型、运算符和表达式

为什么80%的码农都做不了架构师?>>>   hot3.png

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

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

运算符指定要进行的操作。

表达式则把变量与常量组合起来生成新的值。

对象的类型决定该对象可取值的集合以及可以对该对象执行的操作。

2.1变量名

命名规则:

(1)由字母和数字组成的序列,第一个字符必须是字母,下划线被看作是字母,通常用于命名较长的变量名,以提高可读性。

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

(3)大写字母与小写字母是有区别的。

(4)C语言中,变量名使用小写字母,符号常量名全部使用大写字母。

(5)局部变量一般使用较短的变量名(尤其是循环控制变量),外部变量使用较长的名字。

2.2 数据类型及长度

(1)

C语言提供了下列几种基本数据类型:

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

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

float 单精度浮点型

double 双精度浮点型

此外,这些基本数据类型前可以加上short 与long两个限定符。

eg:

short int sh

long int counter

(这种,int可以省略)

(2)

short与long的引入可以为我们提供满足实际需要的不同长度的整型数。

int通常代表特定机器中整数的自然长度。

short类型通常为16位,

long类型通常为32位。

int 类型可以为16位或者32位。

各编译器可以根据硬件特性自主选择合适的类型长度,但是要遵循:

short与int类型至少为16位,

long类型至少为32为。

并且short类型不得长于int类型,而int类型不得长于long类型。

signed与unsigned  用于限定char类型或任何整型。unsigned无符号,总是正值或0,并遵守算术模2n(n次方)定律,其中n是该类型占用的位数。如果char对象占用8位,那么unsiged char类型变量取值范围为0-255,而siged char类型取值范围则为-128-127。

2.3 常量

(1)

类似于1234 ,属于int类型的常量;

类似于123456789L,以字母L或l结尾,属于long类型的常量;

如果一个整数太大以至于无法用int类型表示时,也被当作long类型处理;

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

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

(2)

浮点数常量中包含一个小数点或一个指数,也可以两者都有。

没有后缀的浮点数常量为double类型;

后缀有f或F表示float类型;

后缀l或L则表示long double类型;

(3)

整型数除了用十进制表示外,还可以用八进制或十六进制。

带前缀0的整型常量表示为八进制;

带前缀0x或0X的整型常量表示为十六进制;

八进制或者十六进制也可以使用L表示long类型,使用U表示unsigned类型,eg:0XFUL

(4)

一个字符常量是一个整数,如‘x’。

字符在机器字符集中的数值就是字符常量的值。

字符常量一般用来与其他字符进行比较,但也可以像其他整数一样参与数值运算。


某些字符可以通过转义字符序列表示为字符和字符串常量。

转义字符序列看起来像两个字符,但只表示一个字符。

另外,我们可以用‘\ooo’ 表示任意的字节大小的为模式。其中000代表1-3个八进制数字。

这种位模式还可以用‘\xhh’表示。

其中,hh是一个或多个十六进制数字。

ANSI C语言中的全部转义字符序列如下:

\a:响铃符 

\b:回退符     

\f:换页符    

\n:换行符      

\r:回车符     

\t:横向制表符

\v:纵向制表符   

\\:反斜杠    

\?:问号       

\':单引号      

\":双引号    

\ooo:八进制数   

\xhh:十六进制数

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

我们通常用‘\0’的形式代替0,以强调某些表达式的字符属性,但其数字值为0。

(5)

常量表达式是仅仅只包含常量的表达式。

这种表达式在编译时求值,而不是在运行时求值。

eg:

#define MAXLINE 1000

char line[MAXLINE+1]

(6)

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

例如“I am a string” 或“”都是字符串。

双引号不是字符串的一部分,只是用于限定字符串。

字符常量中使用的转义字符序列同样也可以用在字符串中。

编译时,可以将多个字符串常量连接起来,例如,下列形式:

“hello,”“ world” 等价于 “hello, world”

字符串常量的连接为将较长的字符串分散在若干个源文件中提供了支持

========

从技术角度看,字符串常量就是数组常量。字符串的内部表示使用一个空字符'\0'作为串的结尾,

因此,存储字符串的物理存储单元数比括在双引号中的字符数多一个。

这种表示也说明,C语言对字符串的长度没有限制,但程序必须扫描完整个字符串才能确定字符串的长度。

标准库函数strlen(s)可以返回字符串参数s的长度,但长度不包括末尾的'\0'。

========

我们应该搞清楚字符常量和仅包含一个字符的字符串的区别。

'x'与'X'是不同的。

前者是一个整数,其值是字母x在机器字符集中对应的数值;

后者是一个包含一个字符以及一个结束符'\0'的字符数组。

(7)

枚举常量是另外一种类型的常量。枚举是一个常量整型值的列表。

例如:

enum boolean { NO, YES };

在没有显式说明的情况下,enum类型中第一个枚举名的值是0,第二个是1,一次类推。

如果只指定了部分枚举名的值,那么未指定值的枚举名的值将依着最后一个指定值向后递增。

124605_G0uY_724288.png

2.4 声明

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

一个声明指定一种变量类型,后面所带的变量表可以包含一个或多个该类型的变量。

eg:

int lower,upper,step;

char c, line[1000];

一个声明语句中的多个变量可以拆开在多个声明语句中声明。因此,也可以

int lower;

int upper;

int step;

char c;

char line[1000];

按照这种形式书写代码需要占用较多的空间,但便于向各声明语句中添加注释,也便于以后修改。

还可以在声明的同时对变量进行初始化。

在声明中,如果变量名的后面紧跟一个等号以及一个表达式,该表达式就充当对变量进行初始化的初始化表达式。

125608_DO74_724288.png

任何变量的声明都可以使用const限定符指定,该限定符指定的变量的值不能被修改。

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

2.5 算术运算符

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

整数除法会截断结果中的小数部分。

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

在有负操作数的情况下,整数除法截取的方向以及取模运算结果的符号取决于具体机器的实现

【优先级】二元运算符+和-相同优先级  《 二元运算符 * / % 《 一元运算符+ - ;

算术运算符采用从左到右的结合规则。

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

(1)关系运算符包括:>、 >= 、< 、<=、

它们具有相同的优先级,优先级仅次于他们的是相等性运算符  == !=

关系运算符的优先级比算术运算符底。

(2)

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

运算符&&的优先级比||的优先级高,但两者都比关系运算符和相等运算符的优先级底。

因此,表达式i<lim - 1 && (c = getchar()) != '\n' && c != EOF 就不需要加圆括号了。

但是,由于运算符!= 的优先级高于赋值运算符的优先级,因此,在表达式(c = getchar()) != '\n' 中,就需要使用圆括号。

【总结:赋值运算符《 逻辑运算符 《 相等于运算符 《 关系运算符 《 算术运算符】

2.7类型转换

啊啊

转载于:https://my.oschina.net/cqlcql/blog/535915

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动最小二乘_最小移动以形成弦

移动最小二乘Problem statement: 问题陈述&#xff1a; Given a string S, write a program to check if it is possible to construct the given string S by performing any of the below operations any number of times. In each step, you can: 给定字符串S &#xff0c;…

转: 加快Android编译速度

转&#xff1a; http://timeszoro.xyz/2015/11/25/%E5%8A%A0%E5%BF%ABandroid%E7%BC%96%E8%AF%91%E9%80%9F%E5%BA%A6/ 加快Android编译速度 发表于 2015-11-25 | 对于Android开发者而言&#xff0c;随着工程不断的壮大&#xff0c;Android项目的编译时间也逐渐变长&#xff…

ipv6寻址_什么是IPV4寻址?

ipv6寻址IPV4寻址简介 (Introduction to IPV4 Addressing ) Internet protocol version 4 in any network, is a standard protocol for assigning a logical address (IP address) to hosts. You are currently using the same protocol. This protocol is capable of providi…

1593: [Usaco2008 Feb]Hotel 旅馆

1593: [Usaco2008 Feb]Hotel 旅馆 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 489 Solved: 272[Submit][Status][Discuss]Description 奶牛们最近的旅游计划&#xff0c;是到苏必利尔湖畔&#xff0c;享受那里的湖光山色&#xff0c;以及明媚的阳光。作为整个旅游的策划…

最长递增子序列 子串_最长递增子序列

最长递增子序列 子串Description: 描述&#xff1a; This is one of the most popular dynamic programming problems often used as building block to solve other problems. 这是最流行的动态编程问题之一&#xff0c;通常用作解决其他问题的基础。 Problem statement: 问…

beta版本项目冲刺

项目冲刺第一天项目冲刺第二天项目冲刺第三天项目冲刺第四天项目冲刺第五天项目冲刺第六天项目冲刺第七天转载于:https://www.cnblogs.com/malinlin/p/5006041.html

mkdir 函数_PHP mkdir()函数与示例

mkdir 函数PHP mkdir()函数 (PHP mkdir() function) The full form of mkdir is "Make Directory", the function mkdir() is used to create a directory. mkdir的完整格式为“ Make Directory” &#xff0c; 函数mkdir()用于创建目录。 Syntax: 句法&#xff1a…

WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展

原文:WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展一&#xff0e;前言 申明&#xff1a;WPF自定义控件与样式是一个系列文章&#xff0c;前后是有些关联的&#xff0c;但大多是按照由简到繁的顺序逐步发布的等&#xff0c;若有不明白的地方可以参考本…

Cookie介绍及使用

Cookie学习: 作用:解决了发送的不同请求的数据共享问题 使用: Cookie的创建和存储//创建Cookie对象Cookie cnew Cookie("mouse","");//设置cookie(可选)//设置有效期c.setMaxAge(int seconds);//设置有效路径c.setPath(String uri);//响应Cookie信息给客…

acm模式_ACM的完整形式是什么?

acm模式ACM&#xff1a;计算机协会 (ACM: Association for Computing Machinery) ACM is an abbreviation of the "Association for Computing Machinery (ACM)". ACM是“计算机协会(ACM)”的缩写 。 It is an international academic association or scholarly soc…

c语言:用%f输出实数,只能得到6位小数及求float型数据的有效位数

1.用%f输出实数&#xff0c;只能得到6位小数。程序&#xff1a;#include<stdio.h>int main(){double a 1.0;printf("%f\n",a/3);return 0;}结果&#xff1a;0.333333请按任意键继续. . .2.float型数据的有效位数。程序&#xff1a;#include<stdio.h>int…

二分法查找算法

二分法查找索引值 二分法查找算法步骤&#xff1a;(前提&#xff1a;查询数组为一组有序数)1、定义低位和高位指针low&#xff0c;high&#xff1b;2、通过判断low和high的所指的数值中间值mid来判断关键值是在高位段还是低位段。例题解析&#xff1a; 查找5的索引值 sum {1,2…

bba70_BBA的完整形式是什么?

bba70BBA&#xff1a;工商管理学士 (BBA: Bachelor of Business Administration) BBA is an abbreviation of Bachelor of Business Administration also spelled as B.B.A. In the field of Business Administration, it is an undergraduate degree program. This is a degre…

Qt和纹理

2019独角兽企业重金招聘Python工程师标准>>> test 转载于:https://my.oschina.net/assange/blog/537631

计算机图形学图形旋转_计算机图形学翻译

计算机图形学图形旋转计算机图形学| 翻译 (Computer Graphics | Translations) Transformation techniques mean to modify the current shape or object in a particular manner. Changing of an object after creation, in terms of position or even size is known as trans…

AP 1532E register   Cisco 2504 AP注册WLC

客户的环境是&#xff1a;WLC是 2504 的AP的型号是 1532E的首先要是版本匹配&#xff0c;那么我们就要查一个兼容性列表&#xff0c;请看附件同时&#xff0c;我们要把WLC的版本升级到AIR-CT2500-K9-8-1-111-0.aes 这个版本&#xff1b;同时由于瘦AP 1532E的版本是 Cisco IOS S…

Python 位运算、判断、循环

位运算 1、原码、反码和补码 计算机内部使用补码来表示 2、按位运算实现快速计算 (1) 通过^(异或)快速交换两个整数。 a^b b^a a^b (2) 通过a&(-a)快速获取a的最后为1 位置的整数。 00 00 01 01 -> 5 & 11 11 10 11 -> -5 - - - 00 00 00 01-> 14、利用位运…

dbms数据库管理系统_数据库管理系统(DBMS)中的视图

dbms数据库管理系统DBMS College professor once realized that students feel sad when they see their friends marks higher than them and it creates a negative impact on them. It gave the Professor an idea to create a view table in his student academic result d…

C#中IDisposable 回收非托管资源

C#中IDisposable 更多2014/9/7 来源&#xff1a;C#学习浏览量&#xff1a;4185学习标签&#xff1a; IDisposable本文导读&#xff1a;C#中IDisposable接口的主要用途是释放非托管资源。当不再使用托管对象时&#xff0c;垃圾回收器会自动释放分配给该对象的内存。但无法预测进…

css导航栏_使用CSS的导航栏

css导航栏CSS | 导航栏 (CSS | Navigation Bar) Developing websites is great but developing a user-friendly website is even greater. So how does one design a user-friendly website? What tools to use? Well, there are many tools to mention which are quite hel…