C语言笔记1--类型、运算符与表达式

C语言笔记1--类型、运算符与表达式

总论:

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

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

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

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

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


基本数据类型

C语言提供了下面4种基本数据类型:

char           //字符型,占用一个字节
int            //整型,通常反映了所用机器中整数的自然长度
float          //单精度浮点型
double         //双精度浮点型

数据类型限定符:

1、short 和 long 两个限定符用于限定整型;关键字 int 可以省略,通常也习惯于这么做。

short sh;          // short int sh;
long  counts;      // long  int counts;

2、类型限定符 signed 与 unsigned 只能用于限定 char 类型和任何整型。
3、long 限定符可以用于双精度浮点型,long double 类型表示高精度浮点数。


字符常量

一个字符常量是一个整数,书写时将一个字符括在单引号中(如‘0’)。

字符在机器字符集中的数值就是字符常量的值,如‘0’在机器字符集中的数值是48,它与数字0没关系; 再如'A'在机器字符集中的数值是65。

注:

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

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

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


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

字符串常量就是字符数组,字符串的内部表示使用一个空字符‘\0’作为字符串的结尾。

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

注:

C语言对字符串长度没有限制,程序扫描到‘\0’结束符表示字符串完。

字符串常量存储静态存储区

标准库函数strlen(char *str)返回字符串 str  的长度( 即空值结束符之前字符数目)。
下面设计strlen函数的一个版本:

int strlen(const char s[])
{
     int i = 0;
     while (s[i] != '\0')
     {
	  ++i;
     }
     return i;
}


枚举常量

枚举是一个常量整型值的列表

// 预留业务类型
enum RTBPUB_RESVYPE
{
     RESVYPE_IB        = 0,     //综合帐务
     RESVYPE_OCE       = 1,     //在线计费
     RESVYPE_HB        = 2,     //离线计费
     RESVYPE_OCECHARGE = 5      //在线计费充值
};

(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号“ ,”隔开。

(2) RTBPUB_RESVYPE是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。

(3) 如果不给枚举赋值,那么第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以设定枚举成员的值,从而自定义某个范围内的整数。

(5) 枚举型是预处理指令#define的替代。


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

#define MAXLINE 1000
char g_szline[MAXLINE + 1];


变量声明
变量都 必须先声明后使用,一个声明指定一种变量类型。

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

int i = 0;
int ilen = MAX + 100;

注:

声明语句说明变量的名字和类型,也可以指定变量的初值(初始化)。

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

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

const int PI = 3.14;
const char msg[] = "00000";
int strlen ( const char s[]);

变量初始化

函数内部定义的变量,应该在定义的时候进行初始化,否则它的值是不确定的,为被创建前相应的内存单元保存的值。

int a = 1;  //  传统的C初始化

int b(2);  //  C++的新方式

int c = {3} 或 int c{3}  //  C++的大括号初始化器用于任何类型(大括号内不包含任何东西时,变量的初始化为0)

类型转换

当一个运算符的几个操作数类型不同时,就需要通过一些规则把它们转换为某种共同的类型。
一般来说,自动转换是指把“比较窄的”操作数转换为“比较宽的”操作数,并且不丢失信息的转换。

1、由于 char 类型就是较小的整型,因此在算术表达式中可以自由的使用 char 类型的变量,字符型都将被转换为整型。
/* atoi函数:将字符串S转换为相应的整型数*/
int atoi(const char s[])
{
    int i;
    int n = 0;
    for(i=0; s[i]>='0' && s[i]<='9'; i++)
    {
	n = 10 * n + (s[i] - '0');
    }
	
    return n;
	
}
表达式 s[i] - '0' 能够计算出s[i]中存储的字符所对应的数字值,因为ASCII 码表字符都是相连的。

2、赋值时也要进行类型转换,赋值运算符右边的值需要转换为左边变量的类型,左边变量的类型即赋值表达结果的类型。

3、任何表达式中都可以使用一个称为强制类型转换的一元运算符强制进行显式类型转换。
(类型名)表达式;





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值