笔记2018-08-28

类型转换

  • 自动类型转换
    • 运算转换(编译器会自动把小类型转换为大类型)
    int num = 10;
    double vauble = 3.0;
    double res = num / value;
  • 赋值转换(将等号右边的类型转换为等号左边的类型)
    int num = 10;
    double vauble = num;
  • 强制类型转换
    int num = 10;
    double res = (double)num;

赋值运算符

  • 赋值运算符的结合性(右结合)和优先级
int number = 10;
// 赋值运算符优先级是14, 普通运算符优先级是3和4, 所以先计算普通运算符
// 普通运算符中乘法优先级是3, 加法是4, 所以先计算乘法 
// number += 1 + 25; number += 26; number = number + 26; 
number = 36; 
number += 1 + 5 * 5; 
printf("number = %i\n", number); // 36 }

sizeof 运算符

  • 作用:可以用来计算一个变量或常量所占的字节内存数.
  • 格式:
    • sizeof( 变量\常量 );
      sizeof(10); char c = 'a'; sizeof(c);
    • sizeof 变量\常量;
      sizeof 10; char c = 'a'; sizeof c;
    • sizeof( 数据类型);
      sizeof(float); 如果是数据类型不能省略括号
    • sizeof 面试题
      • sizeof()和+=、*=一样是一个复合运算符, 由sizeof和()两个部分组成, 但是代表的是一个整体
      • 所以sizeof不是一个函数, 是一个运算符, 该运算符的优先级是2
#include <stdio.h> 
int main(){ 
int a = 10; 
double b = 3.14; 
// 由于sizeof的优先级比+号高, 所以会先计算sizeof(a); 
// a是int类型, 所以占4个字节得到结果4 
// 然后再利用计算结果和b相加, 4 + 3.14 = 7.14 
double res = sizeof a+b; 
printf("res = %lf\n", res); // 7.14 
}

逗号运算符

  • 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式

  • 逗号运算符会从左至右依次取出每个表达式的值, 最后整个逗号表达式的值等于最后一个表达式的值

  • 格式: 表达式1,表达式2,… …,表达式n;

#include <stdio.h> 
int main(){ 
int a = 10, b = 20, c;
// ()优先级高于逗号运算符和赋值运算符, 所以先计算()中的内容 
// c = (11, 21); 
// ()中是一个逗号表达式, 结果是最后一个表达式的值, 所以计算结果为21  
// 将逗号表达式的结果赋值给c, 所以c的结果是21 
c = (a + 1, b + 1); 
printf("c = %i\n", c); // 21 }

三目运算符

  • 条件运算符是C语言的唯一的三目运算符,它需要3个数据或表达式构成条件表达式
  • 格式 : 表达式1?表达式2(结果A):表达式3(结果B)
三目运算符示意图
  • 求值规则:
    • 如果"表达式1"为真,三目运算符的运算结果为"表达式2"的值(结果A),否则为"表达式3"的值(结果B)
示例: 
int a = 10; 
int b = 20; 
int max = (a > b) ? a : b; 
printf("max = %d", max); 
输出结果: 20 
等价于: 
int a = 10; 
int b = 20; 
int max = 0; 
if(a>b){ 
  max=a; 
 }else { 
  max=b; 
}   
printf("max = %d", max);
  • 注意点:
    1.条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符
    2.条件运算符?和:是一个整体,不能分开使用
    3.条件运算符的结合方向是从右至左
#include <stdio.h>
int main(){ 
int a = 10; 
int b = 5; 
// 先计算 a > b 
// 然后再根据计算结果判定返回a还是b 
// 相当于int max= (a>b) ? a : b; 
int max= a>b ? a : b; 
printf("max = %i\n", max); // 10 
}
#include <stdio.h>
int main(){ 
int a = 10; 
int b = 5; 
int c = 20; 
int d = 10; 
// 结合性是从右至左, 所以会先计算:后面的内容 
// int res = a>b?a:(c>d?c:d); 
// int res = a>b?a:(20>10?20:10); 
// int res = a>b?a:(20); 
// 然后再计算最终的结果 
// int res = 10>5?10:(20); 
// int res = 10; 
int res = a>b?a:c>d?c:d; 
printf("res = %i\n", res); 
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,199评论 0 13
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,537评论 1 51
  • •1 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语...
    CONLYOUC阅读 8,735评论 9 66
  • 2018.8.10 为了让孩子学会技能,他们需要练习。因此需要你帮孩子找到一个可以练习的方法,而且为了有效果,练习...
    鹃花开阅读 129评论 0 0
  • 作家王小波说过这么一句话:“一个人只拥有此生此世是不够的,他还应该拥有诗意的世界。对我来说,这个世界在长安城里。”...
    湯姆喝醉了阅读 568评论 0 3