C&C++学习笔记——操作符

1. 与(&&)和或(||)具有短路特性,即如果前一个表达式的结果能够决定&&或者||的最终结果,则后一个表达式不会被计算。

  1 /*
  2  *&&和||的短路特性
  3  * */
  4
  5 #include<stdio.h>
  6 int main(){
  7     int num = 0;
  8     0 && ++num;
  9     printf("%d\n", num);
 10
 11     1 || ++num;
 12     printf("%d\n", num);
 13
 14     1 && ++num;
 15     printf("%d\n", num);
 16
 17     0 || ++num;
 18     printf("%d\n", num);
 19     return 0;
 20 }

结果:

0
0
1
2

因此在逻辑表达式中最好不要修改变量的内容!

2.位操作符对字节中的二级制位进行操作,双目位操作符把两个数字在字节中的二进制样式对应数位进行操作。

按位与(&)把对应数位上的数字进行与计算:0&0=0;1&0=0;1&1=1

例如3&5=1:

0000 0011

0000 0101

0000 0001

按位与可以把一个字节长得某些二进制位清0,因为任何位和1按位与结果不变,和0与结果为0,例如判断一个数是不是偶数:!(num & 1)

按位或:0|0=0;  0|1=1;  1|1=1

例如3|5=7:

0000 0011

0000 0101

0000 0111

按位或可以把一个字节的某些数位设置位1,因为任何数位与0或不变,与1或为1

按位异或(^)相同为0,不同为1:0^0=0;1^1=0,1^0=1

例如3^5=6

0000 0011

0000 0101

0000 0110

按位异或可以对某些二进制位进行求反,因为任何二进制位和0异或不变,和1异或结果一定变化

~是单目位操作符,表示一个字节中所有二进制位按位求反

3.移位操作符把一个字节中的所有数位统一左移或者右移若干位,左移<<, 右移>>.例如3<<2表示3的所有数位左移2位,结果为12.

移位过程中,多余的丢弃,

左移中右边空出的数位填充0;

右移操作中,有符号数字一定填充符号位,无符号数字一定填充0

如果移位操作过程中没有丢失有效数据,则右移n位,相当于除以2的n次方,左移相当于乘2的n次方

最小整数:1<<31,

最大整数:~(1<<31)

4.&获得一个变量对应的存储位置的地址,%p是和地址配对的占位符; *操作符可以根据地址数据表示对应的存储位置,并且可以直接对该存储位置进行赋值。

5.三目操作符可以根据一个布尔值从两个不同表达式中挑一个来使用

格式:布尔值?表达式1:表达式2

当布尔值为真时,采用表达式1进行计

算,否则采用表达式2计算

  1 /*
  2  *小写字符转换成大写
  3  * */
  4
  5 #include<stdio.h>
  6 int main(){
  7     char ch;
  8     printf("请输入一个英文字母:");
  9     scanf("%c", &ch);
 10     ch = 'a' <= ch && ch <= 'z' ? ch + 'A'-'a':ch;
 11     printf("转换结果是:%c", ch);
 12     return 0;
 13
 14 }
~

 

 1 /*
  2  *四则表达式练习
  3  * */
  4
  5 #include<stdio.h>
  6 int main(){
  7     char ch=0;
  8     int num = 0, num1 = 0;
  9     printf("请输入一个表达式:");
 10     scanf("%d%c%d", &num, &ch,&num1);
 11     num = ch=='+' ? num+num1 : ch=='-' ? num-num1:num*n    um1; //只考虑+-*
 12     printf("结果是:%d", num);
 13     return 0;
 14 }

6.如果一个表达式中包含多个不同的类型数据,则首先把他们转化为同一类型,然后计算;

这个转化过程是由计算机自动完成的,叫做隐式类型转换,将占地小的数据类型转化为占地大的数据类型。当多个数据所占大小一样的时候把整数转化为浮点数,把有符号的转换成无符号数。注意只是计算机在进行计算时隐式的进行转化,原有变量是不会发生变化的。

 1 /*
  2  *类型转换演示
  3  * */
  4
  5 #include<stdio.h>
  6 int main(){
  7     printf("结果是:%d\n", sizeof(1?1:0.9));
  8     printf("-7+3>0的结果是:%d\n", -7+3>0);
  9
 10     printf("-7+3>0的结果是:%d\n", -7+3u>0);
 11     return 0;
 12
 13 }

结果是:

8

0

1

7、强制类型转化是临时生成一个新数据,使用旧数据对新数据进行赋值,以后的操作中使用新数据;因此旧数据不会发生变化。

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的精简博客系统,源码+数据库+毕业论文+视频演示 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。以前企业对于博客信息的管理和控制,采用人工登记的方式保存相关数据,这种以人力为主的管理模式已然落后。本人结合使用主流的程序开发技术,设计了一款基于Springboot开发的精简博客系统,可以较大地减少人力、财力的损耗,方便相关人员及时更新和保存信息。本系统主要使用B/S开发模式,在idea开发平台上,运用Java语言设计相关的系统功能模块,MySQL数据库管理相关的系统数据信息,SpringBoot框架设计和开发系统功能架构,最后通过使用Tomcat服务器,在浏览器中发布设计的系统,并且完成系统与数据库的交互工作。本文对系统的需求分析、可行性分析、技术支持、功能设计、数据库设计、功能测试等内容做了较为详细的介绍,并且在本文中也展示了系统主要的功能模块设计界面和操作界面,并对其做出了必要的解释说明,方便用户对系统进行操作和使用,以及后期的相关人员对系统进行更新和维护。本系统的实现可以极大地提高企业的工作效率,提升用户的使用体验,因此在现实生活中运用本系统具有很大的使用价值。 关键词:博客管理;Java语言;B/S结构;MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值