类型、运算符与表达式
来源:互联网 发布:centos phomyadmin 编辑:程序博客网 时间:2024/06/08 16:11
首先介绍下一些概念:
变量和常量时程序处理的两种基本数据对象。
声明语句需要说明变量的名字及类型,也可以指定变量的初值。
运算符是指定将要进行的操作。
表达式则是把变量与常量组合起来生成新的值。
对象的类型决定该对象的取值的集合以及可以对该对象执行的操作。
变量
程序执行中,需要临时保存数据的容器,称之位变量。
声明一个变量的结构是:
变量类型 变量名;(或者)变量类型 变量名 = 初始值;
变量名:变量名是有数字与字符组成的,第一个字符必须位字面,下划线'_'是被看着是字面的。
变量的类型:即数据类型。
数据类型有哪些呢?
在C语言里,数据类型分位 基本数据类型 和 引用数据类型。
基本数据类型:char类型,int类型,float类型,double类型。
引用数据类型:指针类型,结构体类型,枚举类型......
变量是占内存空间的。
• char: 有符号 8 位整数。
• short: 有符号 16 位整数。
• int: 有符号 32 位整数。
• long: 在 32 位系统是 32 整数 (long int),在 64 位系统则是 64 位整数。
• long long: 有符号 64 位整数 (long long int)。
• bool: _Bool 类型,8 位整数,在 stdbool.h 中定义了 bool / true / false 宏便于使⽤。
例子:
char _c;
int i;
long l = 1l;
float f = 1.0f;
double d = 1.0;
字面值
字面值是源代码中用来描述固定指的记号,可能是整数、浮点数、字符或者字符串。
1>整数常量
除里常见的十进制整数外,还可以用八进制(0开头)或十六进制(0x/0X)表示。
int x = 010;
int y = 0x0A;
printf("x = %d, y = %d\n", x, y);
2>浮点常量
一般包含小数的声明为float或者double。
默认浮点常量是double,可以F后缀表示float,用L后缀表示long double类型。
3>字符常量
字符常量默认是int类型。
4>字符串常量
C语言中的字符串是一个以NULL(也就是\0)结尾的char数组
空字符串在内存中占用一个字节,包含一个NULL字符,也就是说要表示一个长度为1的字符串最少需要2个字节来存储(strlen和sizeof表示的含义不同)。
char s[] = "Hello, World!";
char * s2 = "Hello, C!";
类型转换
当运算符的几个操作数类型不同时,就需要进行类型转换。通常编译器会做某些自动的隐式转换操作,在不丢失信息的前提下,将位宽“窄”的操作数转换位“宽”类型。
隐式类型转换
编译器默认的隐式转换的数据类型:
long double > double > float > long long > long > int > char > _Bool
强制类型转换
强制类型转换存在风险。可能会导致数据的问题。
int num = 1;
long newNum = (long)num;
运算符
运算符就像我们用的加、减、乘、除。让数字或者变量进行运算。
在C语言里面,运算符也是有区分的,有一元运算符、二元运算符以及三元运算符。
下面介绍下特殊的运算符
1>复合字面值
C99新增的内容,可以直接用该语法声明一个结构或者数组指针。
(类型名称)(初始化列表)
例如:
// 整型变量,指针
int * i = &(int){123};
// 数组,指针
int * x = (int[]){1,2,3,4};
// 结构,指针
struct data_t * data = &(struct data_t){.x = 123};
// 函数参数,结构参数,结构指针参数
func(123, &(struct data_t){.x = 123});
2>sizeof
返回操作数占用内存空间大小,单位字节(byte)。sizeof返回值是size_t类型,操作数可以是类型和变量。
size_t size;
int x = 1;
size = sizeof(int);
size = sizeof(x);
size = sizeof x;
size = sizeof(&x);
size = sizeof &x;
附:不要用int代替 size_t,因为在32位和64位平台size_t长度不同。
3>逗号运算符
逗号运算符,可以确保操作数从左到右顺序处理,并返回右操作数的值和类型
int i = 1;
long long x = (i++ , (long long )i);
printf("%lld\n",x);
希望持续关注,如有疑问请回复!谢谢!
- 类型、运算符与表达式
- 类型、运算符与表达式
- 第二章 类型、运算符与表达式
- <二>类型、运算符与表达式
- C程序设计语言- 类型、运算符与表达式-2.2----类型转换、自增运算符与自减运算符、按位运算符、赋值运算符与表达式
- 《C程序设计语言》笔记----第二章 类型、运算符与表达式
- 第2章 类型、运算符与表达式
- 第2章 类型、运算符与表达式(笔记)
- 《C程序设计语言》 第二章 类型、运算符与表达式
- C语言程序设计 -- 2 类型、运算符与表达式
- C语言--第二篇类型、运算符与表达式
- C语言笔记1--类型、运算符与表达式
- 第二章——类型、运算符与表达式
- C程序设计语言(一)导言,类型、运算符与表达式
- K&R 第二章 类型,运算符 与表达式
- c语言的数算据类型、运算符与表达式
- 一、类型、运算符、表达式
- 类型,运算符和表达式
- 计算机网络复习系列:TCP/IP四层模型浅析
- Crit-Bit Tree 深度解析
- 操作员界面图形设计的基本原则
- 南宁便秘治疗哪家最好
- Codeforces Round #304 (Div. 2) B.Soldier and Badges
- 类型、运算符与表达式
- 自定义TexturePacker插件导出自己的plist文件
- python交互式环境,django模板报错:django.core.exceptions.ImproperlyConfigured
- 南宁割便秘哪里比较好
- HotSpot运行时概览#2
- WPF中的无边框透明可缩放窗体
- Spring AOP 的应用
- sublime中文乱码
- 控制流