赋值运算符的表达式
复合的赋值运算符
= 加上其他运算符,构成了复合的赋值运算符
逗号运算符和逗号表达式
//
// main.c
// project1
//
// Created by sihan guo on 2019/06/13.
// Copyright © 2019 sihan guo. All rights reserved.
//
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
// 赋值运算符的表达式: = 将等号右边的值付给等号左边的变量
// = 左边 是个变量 右边是个值 赋给是直接赋值 或者改变变量的这个值
int a;
a = 5;
a = 6.5;//将实型数据赋值给整形变量时,小数部分会被舍弃 a = 6;
a = 18 + 50;//68
a = a + 5;//73
float f;
f = 125;//XXXEXXX = 1.25E+2,实型变量时 按指数的形式保存在内存中
//几个概念
//char b;//这个叫变量定义,系统会分给a一个字节内存,内存里边的值不确定
char b = 90;//这个叫变量定义:同时给变量赋初值(定义时初始化)
//这个不是赋值,这个叫定义时赋初值
//-128 ~ 127
//b = 900;//赋值语句 这就是赋值 会造成溢出 溢出后的值 就会变的不可预料
//赋值的原则:类型要相同,类型不同的强制类型转换,应当用强制类型转换时,开发者必须自己明确知道不会溢出
int c;
// c = (int)100000000023;//会造成溢出,溢出就会造成不确定
a += 3;//+和=必须紧挨着 分开后就会失效 相当于 a = a + 3;
int x = 2,y = 8;
x *= y+8;//相当于 x = x * (y +8); 如果 *= 右侧是个表达式的话 则相当于表达式有括号 32
x %= 3;//相当于 x = x % 3; 2
//赋值表达式本身就是有值的 他的值就等于等号右边的部分
a = 4;
//printf("a += 5这个表达式的值是%d",a += 5);//9
//解决了两个赋值问题
int m,p;
m = ( p = 5 );// m = 5;p = 5;
//赋值运算符是从左至右的结合性 比如说:
a = m = p = 5;
//不明白就加括号解决
//逗号运算符和逗号表达式
//优先级最低的运算符
//格式:表达式1,表达式2
//求解过程:
//先求解表达式1 再求解表达式2
int k;
k = (4,3);//整个表达式的值就是表达式2的值
//printf("k的值是%d\n",k);
//例子:
int t;
int re;
re = (t = 3*5, t * 4);
printf("t的值是%d\n",t);
printf("re的值是%d\n",re);
//扩展逗号表达式
//如果逗号表达式有很多式子的话:最终的值是最后一个表达式N的值
return 0;
}