1.写在前面

今天大年初十,今天开工了,我们今天继续来学C语言的变量相关的规则,也是C语言之父的《C程序设计语言》的神书的第二章。任何程序都是用来处理数据的,那么变量或者常量都是用来存储对应的数据的,所以我们今天就来窥探一下变量相关的规则。

2.概述

变量和常量是程序处理的两种基本数据对象。声明语句说明变量的名字及类型,也可以指定变量的初值。运算符指定将要进行的操作。表达式则把变量和常量组合起来生成新的值。对象的类型决定对象可取值的集合以及可以对该对象执行的操作。从汇编语言的角度来说,处理数据的时候,我们需要知道这个数据所在的地址,也就是对应的变量的名字,我们还需要这个数据的长度,也就是我们这儿所说的类型。

3.变量名

从汇编的角度,我们存储数据的地址具有唯一性,所以可以得出我们的变量的命名也是具有唯一性的,不然会起冲突,简单的来说这就是变量的命名规则之一。

变量命名的规则:名字是由字母和数字组成的序列,但其第一个字符必须为字母。可能有人会说为什么不用数字,数字话,会给人造成误解,误解成这个是值。(下划线"_"我们也可以看成是字母)

变量的命名尽量见名知意。同时变量的命名尽量不要和C语言的关键字相同,因为这样编译器无法区分这个是关键字还是变量。

4.数据类型及长度

数据的地址通过变量名已经表示出来,但是数据的长度我们怎么表示出来。所以C语言的提供了几种常用的类型来表示数据的长度。

我们可以通过如下的代码来查看对应的数据类型的长度,具体的代码如下:

#include<stdio.h>
#include <stdbool.h>int main() {printf("int型长度:%d\n", sizeof(int));printf("short int型长度:%d\n", sizeof(short int));printf("long int型长度:%d\n", sizeof(long int));printf("long long int型长度:%d\n", sizeof(long long));printf("char型长度:%d\n", sizeof(char));printf("bool型长度:%d\n", sizeof(bool));printf("float型长度:%d\n", sizeof(float));printf("double型长度:%d\n", sizeof(double));return 0;
}

运行的结果如下:

对于上面的运行的结果,我们总结出如下的表格:

类型 长度
int 4位
short int 2位
long int 8位
long long 8位
char 1位
bool 1位
float 4位
double 8位

C语言中还有就是signedunsigned两个关键字,signed表示有符号的数,unsigned表示无符号数,我们知道计算机中存储的数据都是二级制的数,如果这个类型是无符号的数,那么这个数的最高位就不是符号位,如果这个数是有符号的数,那么这个数字的最高位就是符号位。

5.常量

这个值在编译前就确定了,那么这个值就是常量。

long类型的常量以字母l或者L结尾。无符号常量以字母u或者U结尾。后缀ul或UL表明的是unsigned long 类型。

后缀f或F表示float类型,而后缀l或L则表示long double 类型。

带前缀0的整型常量表示它为八进制形式;前缀为0x或0X则表示它为十六进制形式。

'x’和"x"这两个的存储在计算机中是不一样的,'x’就是表示一个字符,存的是x的ASCII码值,"x"表示一个字符串,存的是x的ASCII码值+\0

6.声明

变量不可能无中生有的出来的,所以变量要使用必须先声明,那么如何声明变量呢?变量的两大要素,变量类名 变量的类型,所以我们可以知道大概的变量的声明的规则,就是定义好类型 定义好变量名。

注意:

  • 默认的情况下,外部变量和静态变量都被初始化为0
  • 未经显示初始化的自动变量的值为未定义值。
  • 任何变量的声明都可以使用const限定符显得你。该限定符指定变量的值不能被修改。对于数组而言,const限定符指定数组所有元素的值都不能被修改。

7.算术运算符

程序的本质是对数据进行操作,那么对数据的操作肯定要进行常用的运算符操作。其中二元算术运算符包括:+、-、*、/、%

其中%是取模运算符,不能应用于float或double类型。在有负操作数的情况下,整数除法截取的方向以及取模运算结果的符合取决于具体机器的实现,这和处理上溢或下溢的情况是一样的。

8.关系运算符与逻辑运算符

关系运算符包括下列几个运算符:>、>=、 <、 <=、 ==、 !=

逻辑运算符:&&(与)、||(或)、!(非)

关系运算符是用来判断两个变量比较的结果是否为真假,逻辑运算符是用来判断两个组合的条件的结果是否为真假。

9.类型转换

数学中3+3.0是允许的,但是在计算机中,3的类型的是int,3.0的类型是double,两种类型是不一样的,理论上这两个数是不能进行计算的,但是如果这样的话,就不科学,所以我们必须要把这两个数的类型进行统一,将int类型转换成double类型这一过程我们称之为类型转换。

自动类型转换:一般将占位少的类型转换成占位多的类型。这是一种不丢失信息的转换。

注意:C语言没有指定char类型的变量是无符号变量还是带符号变量。当把一个char类型的值转换为int类型值时候,取决与char类型值的最左一位是0还是1,如果是0的话就是正数,如果是1就是负数。

10.自增运算符与自减运算符

前缀自增或者前缀自减,后缀自增或者自减,不管自增还是自减,都是对原来的变量进行加1或者减1。前缀的运算符表示先进行自增或者自减然后进行赋值。后缀的运算符表示先进行赋值再进行自增或者自减。

例如:

int a = 5;
int c = a++; // a等于6 c等于5a = 5;
c = ++a; // a等于6 c等于6

11.按位运算符

& 按位与(AND)
| 按位或(OR)
^ 按位异或(XOR)
<< 左移
>> 右移
~ 按位求反

所有的按位运算符都是对二进制进行操作的。

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

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

异或的话,相同为0,不同为1

取反就是将1变成0 0变成1

左移和右移需要考虑的符号位,有些是要考虑符号位的。有些事不用考虑符号位的。

12.赋值运算符与表达式

+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=

赋值运算符:a = a+5 ----> a+=5 左右两边是等价,想必大家可以举一反三了。

13.条件表达式

expr1 ? exper2 : expr3
expr1等于真 执行expr2 expr1等于假 执行expr3

14.运算符优先级和求值次序

同一行中的各运算符具有相同的优先级,各行间从上往下优先级逐行降低。

15.写在最后

本篇博客大概的介绍了下C语言的变量的一些规则,下一篇博客主要给大家讲下控制流。

听说C语言很难?怎么不来看看我这篇(二)变量相关推荐

  1. 听说C语言很难?怎么不来看看我这篇(六)结构

    1.写在前面 前面的我们学习了C语言的变量.控制流.函数.指针,这节博客我们来学习C语言的结构的,C语言基础的最后一个模块.那么什么是结构呢?结构是一个或多个变量的集合,这些变量可能为不同的类型,为了 ...

  2. 少儿编程c语言 难度,c语言很难学吗

    C语言是一种面向过程的编程语言,它已经从计算机硬件中分离出来,可以设计中等规模的程序.接下来给大家讲讲c语言很难学吗,希望对你们有帮助. C语言编程,除了让你知道相关的概念,带你进入编程大门,也让你了 ...

  3. 羊了个羊, 听说这游戏很难

    听说这游戏很难

  4. 万象物语找回服务器,说有万象物语私服也不知道真假,无限透晶石的公益服倒是听说过,很难超越...

    原标题:说有万象物语私服也不知道真假,无限透晶石的公益服倒是听说过,很难超越 六大种族的宏观世界,构造出奇幻的世界,玩家以独特的视角看待一切的衰老和死亡,在万象物语中玩家不仅能好好发挥时代历史背景下赋 ...

  5. rust语言与go语言_用户调查显示,Rust语言很难学习和使用

    rust语言与go语言 由Rust语言团队进行的对Rust用户社区的新调查显示,人们对该语言及其使用的兴趣与日俱增,但是,用户对该项目吹捧的一些Rust功能却感到失望,这是该项目的优势. 该调查吸引了 ...

  6. 用户调查显示,Rust语言很难学习和使用

    由Rust语言团队进行的对Rust用户社区的新调查显示,人们对该语言及其使用的兴趣与日俱增,但也使用户对项目所吹捧的一些Rust功能感到沮丧. 该调查吸引了将近6,000个Rust用户的反馈. 问题的 ...

  7. python是不是比c语言难_解答:为什么很多人觉得C语言很难?

    对初学者来说,C语言确实有一定的难点,但是C语言是基础的语言,并不是最难的所以学不好的主要还是自身的问题.依据本人这么多年的经验,这尝试分析下为何这么多人学不好C语言? C语言本身存在一定难度 C语言 ...

  8. 本以为java语言很难学,其实就学完下面这些知识,就能理解了

    刚毕业,找工作,很多人都面临相同的问题.自己能做什么?什么工作既舒服,福利又好(不存在的,除非银行你家开的).然后社会是个发展的社会,现代人的生活越来越智能,生活中其实充满"技术" ...

  9. C语言很难学?不不不,只需要这几步!

    很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言? 已经开发了很多年的程序的我,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言. 首先,小编告诉你: 1.工欲善其事,必 ...

最新文章

  1. java http连接_Java中通过方法创建一个http连接并请求(服务器间进行通信)
  2. vs code 快捷键设置 2018
  3. [2020-09-11 CQBZ/HSZX多校联测 T3] 万猪拱塔(线段树+巧妙转化)
  4. 周至四中计算机老师,周至县第四中学顺利承办周至县 “教育信息化技术与教学课堂深度融合交流研讨会”...
  5. 通过web.xml文件自动启动spring容器加载对应的配置文件
  6. Polylink 智能话机之—— e-talk 2200
  7. python群控模拟安卓系统_手机群控脚本通用版安装包下载-手机群控脚本通用版apk(云控平板)v1.0.01真机模拟版_新绿资源网...
  8. 微信小程序—使用阿里巴巴iconfont矢量图标素材
  9. Unity 3D 入门小游戏 小球酷跑(上)
  10. SYN FLOOD WINCAP
  11. 高德地图api汇总(二)插件的使用
  12. JAVA入门学习资料
  13. ES6语法笔记(ES6~ES11)
  14. 【矩阵论笔记】最小多项式与Jordan型的关系
  15. 神、上帝以及老天爷(递推公式)
  16. 计算机在初中物理中应用,多媒體计算机技术在初中物理教学中的应用.doc
  17. 贼好用的 Java 工具类库! GitHub 星标 10k+,你在用吗?
  18. C++无法打开源文件
  19. 什么叫软件架构师(转)
  20. HttpClient实现自动登录校园网

热门文章

  1. fluentd 安装、配置、使用介绍
  2. fluent-bit代替filebeat实战(smartgate、nginx)
  3. 雨听 | 英语作文作文万能句型
  4. Windows+CPU only+VS2013安装caffe以及配置Python接口
  5. 用户输入矩形的长和宽,计算其面积并输出,结果四舍五入,保留2位小数。
  6. 模仿Airbnb的悬浮搜索框动画
  7. android省电优化方案,安卓省电折腾那么多年,这几个优化方案效果明显
  8. LDAP基础:8:ldap用户密码确认和修改
  9. YC全球总裁:我招揽陆奇好多年,如今终于如愿了!
  10. 猫耳FM音频转换成MP3格式