004_stdc_C语言基础
2021-01-21 11:13
标签:错误 用户 符号 int main 运算 运算优先级 前++ 三目运算 回顾: C语言中的数据(基本) 根据读写属性 常量/变量 变量的类型 确定该变量的字节数,取值范围,数据的存储格式 数据类型,是指在数据结构定义上的数据的集合以及基于该集合的运算 -------------------- C语言中的运算(基本) 运算符 --------------- i = c; 赋值运算时两边类型不一致,小字节变量赋值给大字节变量的时候 赋值运算时 将=右边的类型转换为=左边的类型,浮点数赋值给整型变量 取整(编译器,隐式转换) 算术运算 10%3=1 1/3*3 跟 3/3*1 相等吗 [练习] [练习] a = num % 10 -->个位 5 a*10+b 如果运算符两边类型不一致,将数据转换为同一类型,再运算,运算后的结果,转换后的类型 int s = 3.14*3*3 //?? 有浮点转浮点,有双精度浮点转双精度浮点 复合赋值运算 += |= &= a+=2; //a = a + 2; -180 自增自减 前++(++在变量前)后++(++在变量后) 区别: [练习] 运算符的优先级 linux 查看优先级指令 man operator 单目 --> 一个操作数 i++ 位运算 对数据的bit位进行操作 & 按位与 & 按位与 相同bit位 同时为1,结果1,否则0 | 按位或 相应bit位 同时为0,结果0,否则1 ~ 按位取反 bit 位 0变成1 1 变成0 ^ 按位异或 相应bit位 相同为0,不同为1 >> 右移 >> 右移 有符号数 补符号位 无符号补0 /* 更理解的方式 //将bit[6] = 0 ;第七个引脚输出低电平 专业写法 条件运算 (三目运算符) 表达式1?表达式2:表达式3 如果表达式1为真 执行表达式2 否则 执行表达式3 /* [使用条件运算] 从键盘上 输入 一个年份 被4整除的年份但是不能被100整除 用以下年份测试一下: 2000 2008 是闰年 对照 man operator 查看优先级 004_stdc_C语言基础 标签:错误 用户 符号 int main 运算 运算优先级 前++ 三目运算 原文地址:https://www.cnblogs.com/tanzizheng/p/12896020.html
sizeof 计算变量/类型/常量/表达式
字节数
sizeof(int);
sizeof(2+3);
char c = 0;//1
int i = 0;//4
赋值到低位,高位补0
i = (int)3.14
+ - * / %
num % 10 获得一个数的个位数
分苹果,老师从冰箱拿来n个苹果(从键盘输入),分给班上的7个小朋友,输出每个小朋友分多少个,还剩下多少个? int num = 0;
//1.输入苹果数
printf("输入苹果数:");
scanf("%d",&num);
//2.开始计算
int average = 0;
average = num / 7;
//3.剩余多少个苹果
int left = 0;
left = num % 7;
//4.输出结果
printf("平均每个小朋友分 %d\n",average);
printf("还剩下%d\n",left);
输入一个两位数的整数,输出这个两位数 数字交换后的值
25 --> 52
b = num / 10 -->十位 2
3.14*r*r = 浮点面积
小的转大的,有符号转无符号
编译器(隐式转换)
a&=3 //a = a & 3; int i = 10;
i+= i-=100; ==> i = i - 100;i = -90
i+=i; //i=? -80
i = ?
++ --
i++; //i=i+1;
i--; //i=i-1;
前++ 先+1 后使用变量的值
后++ 先使用变量的值,后+1
输入一个秒数
输出 小时 分钟 秒/*
* 输入秒数 输出时间
*/
#include
双目 --> 两个操作数 + - * / %
三目 --> 三个操作数
清0 获取bit位的值
| 按位或
置1 获取bit位的值
~ 按位取反
^ 按位异或 //0000 0011
//0000 0001 &
//-------------
//0000 0001
printf("0x3 & 0x1=0x%x\n",0x3&0x1); //0x1
//0000 1010 0xa
//0000 1001 0x9 |
//-------------
//0000 1011 0xb
printf("0xa | 0x9=0x%x\n",0xa|0x9); //0xb
//0000 1111 0xf
//1111 0000 0xf0 ~
printf("~0xf=0x%x\n",~0xf); //0xf0
//0000 1100
//0000 1111 ^
//------------
//0000 0011
printf("0xc^0xf = 0x%x\n",0xc^0xf);
//0000 1100 0xc//0011 0000 0x30
printf("0x1",0x11);
printf("0x1",0x12);
printf("0x1",0x13);
printf("0x3",0x32);
//0000 0001 1>>1
printf("0x1>>1 = %d\n",0x1>>1);
char c = 0x81;//1000 0001 ==>11110000
printf("c>>3 = %x\n",c=c>>3); //0x10
unsigned char uc = 0x81;
uc=uc>>3;
printf("uc>>3 = 0x%x\n",uc); //0x10
* 在某一些嵌入式设备中
* 对一个bit 位置1
* 可以输出高电平
*/ int reg = 0x0f; //0000 1111
//设置bit[6] = 1;第七个引脚输出高电平
reg = reg | 0x40;//0100 0000 //| 按位或 相应bit位 同时为0,结果0,否则1
printf("reg = 0x%x\n",reg);//;reg = 0x4f
int reg = 0x0f; //0000 1111
//设置bit[6] = 1;第七个引脚输出高电平
//reg = reg | 0x40;//0100 0000 //| 按位或 相应bit位 同时为0,结果0,否则1
reg =reg | 16;//左移6位
printf("reg = 0x%x\n",reg);//;reg = 0x4f
int reg = 0x0f; //0000 1111
//将bit[6] = 0 ;第七个引脚输出低电平
reg = reg & 0xffffffbf;// 1011->b
printf("reg = 0x%x\n",reg); //0x0f // & 按位与 相同bit位 同时为1,结果1,否则0
int reg = 0x0f; //0000 1111
//将bit[6] = 0 ;第七个引脚输出低电平
//reg = reg & 0xffffffbf;// 1011->b
reg = reg & ~(16); //0100 0000 取反 -> 1011 1111
printf("reg = 0x%x\n",reg); //0x0f
* 输入一个整数
* 如果是偶数 输出0
* 如果是奇数 输出1
* [输入一个0-100之间的数,如该用户输入不对,提示用户输入错误,如果是0-100输出 正确]
*/ int r = 0;
int num = 0;
printf("输入一个整数:");
scanf("%d",&num);
//r = num%2?1:0;
//printf("偶数0,奇数1 r=%d\n",r);
//num%2?printf("奇数\n"):printf("偶数\n");
num>=0 && num100?printf("正确\n"):printf("错误\n");
输出 该年是否是闰年
或者能被400整除的也是
1900 2018 不是闰年 (year%4 == 0) && (year%100 != 0) ||(year % 400==0)
year%4 == 0 && year%100 != 0 ||year % 400==0
下一篇:Mybatis整合Spring