目录:

一、进制转换

二、常量

三、sizeof

四、运算符

五、赋值运算符

六、自增减运算符

七、关系运算符

八、逻辑运算符

九、取址寻址运算符

回到顶部

一、进制转换

1 进制转换是人们利用符号来计数的方法,包含有多种数据转换,进制转换由一组数码符号和两个基本因素(位与权),进制包括二进制、十进制、十进制。

2 二进制和十进制

位与权:

9   3位

10  1权

整数93在二进制在一个字节中的二进制存储方式

0   1   0   1   1   1   0   1位

128 64  32  16  8   4   2   1权

零和正数:符号位为最高位值为0

二进制转换为十进制:一位加权,零位不见

01011101  = 1 + 4 + 8 + 16 + 64  = 2^0 + 2^2 + 2^3 + 2^4 + 2^6  = 93

01101101  = 1 + 4 + 8 + 32 + 64  = 2^0 + 2^2 + 2^3 + 2^5 + 2^6  = 109

十进制转换为二进制:有权添1,无权补0

93 = 0101 1101

93-64=29-16=13-8=5-4=1-1=0

练习:

1 107十进制数转换成二进制 0110 1011

107-64=43-32=11-8=3-2=1-1=0

2 0110 0111二进制数转换成十进制

1 + 2 +4 +32 +64 = 103

3 十进制54,十转二,二转十

54-32=22-16=6-4=2-2=0   0011 0110

0011 0110 = 2+4+16+32=54

4 克里斯-波什 球衣号码1 下面是什么?     winning

W   01110111   I   01101001   N 01101110

N   01101110   I   01101001   N 01101110

G    01100111

1+2+4+16+32+64=119    W

1+8+32+64=105    I

2+4+8+32+64=110    N

1+2+4+32+64=103   G

回到顶部

二、常量

1 常量就是不可改变的值

1.

int数值      代表的数据类型

3          int

3L         long int

3LL        long long int

3u         unsigned int

3ul         unsigned long

2.

float数值      代表的数据类型

3.5          double

3.5f          float

3.5F         long double

回到顶部

三、sizeof(参数)

计算出数据所占内存空间大小,以字节为单位。

参数可以是类型、变量和表达式,但sizeof()不负责计算表达式的值,只关注类型。

sizeof()的占位符是%ld

 #include <stdio.h>

 int main()
{
char ch;
int i;
long int i2 = 8L;
int i3 = ;
printf("字符ch的存储空间是:%ld\n",sizeof(ch));
printf("变量i的存储空间是:%ld\n",sizeof(i));
printf("数值8的存储空间是:%ld\n",sizeof());
printf("数值8L的存储空间是:%ld\n",sizeof(8L));
printf("变量i2的存储空间是:%ld\n",sizeof(i2));
//sizeof不负责运算
printf("变量i3=4的存储空间是:%ld\n",sizeof(i3=));
printf("i3的值不变:%d\n",i3);
return ;
}

回到顶部

四、运算符

c语言的一个特点是它更强调表达式而不是语句,表达式是表示如何计算值的公式,最简单的表达式是常量和变量,变量表示程序运行的时候需要计算的值,常量表示不变的值,更加复杂的表达式把运算符用作操作数。

1 算术运算符:  +  -  *  /求商  %取余

/ 整数相除,取整数部分

/和%都不能对0操作,否则中断程序,但/0.0允许,inf是无穷大

%只能用于整数,浮点数补支持

/向0整除(取更靠近0的数),运算时跟数学是一样的

%符号与%前面的数字符号相同,取余跟数学不一样没只能%前面的匹配

scanf("%*c") 清除缓存

练习:

1.从键盘输入一个秒数,输出几小时几分钟几秒,比如:3666秒,得到1小时1分钟6秒

 #include <stdio.h>
//从键盘输入一个秒数,输出几小时几分钟几秒,比如:3666秒,得到1小时1分钟6秒
int main()
{
int miao;
printf("请输入一个秒数:\n");
scanf("%d",&miao);
int h = miao/;
int m = miao%/;
int s = miao%;//miao%3600%60
printf("%d小时%d分钟%d秒\n",h,m,s);
return ;
}

2 输入一个数,固定长度是三位数,输入123,输出结果倒置:321

 #include <stdio.h>
//输入一个数,固定长度是三位数,输入123,输出结果倒置:321
int main()
{
int i;
printf("请输入一个数:");
scanf("%d",&i);
int r1 = i / ;//
int r2 = i % / ;//
int r3 = i % ;//3
//int r = r3 * 100 + r2 * 10 + r1;
//printf("倒置数是:%d\n",r);
printf("倒置数是:%d%d%d\n",r3,r2,r1);
return ;
}

回到顶部

五、赋值运算符=

把等号右边的值付给左边的变量,从右向左

int i = 10;

int j = 20,k = 30;

i = j = k = 6;//不推荐

k = 6;

j = k;

i = j;

 #include <stdio.h>

 int main()
{
int i = ;
int j = ,k = ;
i = j = k = ;
printf("i:%d,j:%d,k:%d\n",i,j,k);
//int 10 = x;错误
//i + j =10;错误
printf("i=10:%d\n",i=);//表达式i=10的值也是10
return ;
}

左边必须是一个左值(变量),不能是常数,也不能是表达式。

=赋值 ==相等

符合赋值:

i+=3 -> i=i+3

i-=3 -> i=i-3

i*=3 -> i=i*3

i/=3 -> i=i/3

i%=3 -> i=i%3

回到顶部

六、自增、自减运算符

++、--:变量自增自减,只能用于变量,不能用于常量或表达式或其他。

可以用于整型变量 int/short/long、浮点型 float/double和字符型char.

一般只用于整型。

++i 先自增,在运算

i++ 先运算,在自增

i,i++,==i,从内存上说是同块内存

在同一个表达式中不要对同一个变量多次进行自增自减操作,难道加大,代码变的不可读。

 #include <stdio.h>

 int main()
{
int i = ;
int j = ;
i++;
j--;
printf("i的值:%d\n",i);
printf("j的值:%d\n",j);
int k = ;
int l = ;
//k = l++;//后缀表达式,先赋值在自增
//k = ++l;//前缀表达式,先自增在赋值
//k = ++l + l++;
//k = l++ + ++l;
printf("k的值:%d\n",k);
printf("l的值:%d\n",l);
return ;
}

回到顶部

七、关系运算符

1 主要用来表示两个或多个数、变量、表达式之间的关系、在c语言中,关系运算符和数学上的<、>、>=、<=、一样,==等于、!=不等于,表达式产生的结果,1代表成立,0代表不成立。

2 关系运算符也可以用于比较整数和浮点数,也允许混合类型操作数。

 #include <stdio.h>

 int main()
{
int num1 = ;
int num2 = ;
printf("num1>num2:%d\n",num1>num2);
//printf("num1=num2:%d\n",num1=num2);
printf("num1==num2:%d\n",num1==num2);
printf("num1!=num2:%d\n",num1!=num2);
return ;
}

回到顶部

八、逻辑运算符

1 &&与  ||或  !非

通常用来表示表达式间的关系

2 逻辑运算符所产生的结果:0表示补成立 1表示成立

当操作数处理结果不是1 或者0时,逻辑运算符将非0操作数作为真值处理。1真  0假  非0真

3 表达式1 &&(且) 表达式2 结果为:

真 && 真,结果为真

真 && 假,结果为假

总结:只要有一个为假,结果就为假。都为真时,才为真。

4 表达式1  ||  表达式2  结果为:

真 || 真,结果为真

真 || 假,结果为真

总结:只要有一个为真,结果就为真。都为假时,才为假。

5 非表达式   !表达式1

表达式1      !表达式1

真                                     假

假                                     真

 #include <stdio.h>

 int main()
{
int num1 = ;
int num2 = ;
int num3 = ;
int num4 = ;
//&& 逻辑与表达式
printf("(num1>num2)&&(num3>num4):%d\n",(num1>num2)&&(num3>num4));
printf("(num1>num2)&&(num3<num4):%d\n",(num1>num2)&&(num3<num4));
//逻辑或表达式
printf("(num1>num2)||(num3>num4):%d\n",(num1>num2)||(num3>num4));
printf("(num1>num2)||(num3<num4):%d\n",(num1>num2)||(num3<num4));
printf("(num1>num2):%d\n",num1>num2);
//非表达式,取反
printf("!(num1>num2):%d\n",!(num1>num2));
//逻辑运算符 短路与 num3=10 并没有执行
printf("(num1<num2)&&(num3=10):%d\n",(num1<num2)&&(num3=));
printf("num3:%d\n",num3);
//逻辑运算符 短路或 num3=15 并没有执行
printf("(num1>num2)||(num3=15):%d\n",(num1>num2)||(num3=));
printf("num3:%d\n",num3);
return ;
}

6 短路运算

短路与:若第一个表达式1为假,后面的表达式不在执行,

短路或:若第一个表达式1为真,后面的表达式不在执行,

回到顶部

九、取址运算符& 寻址运算符*

1 在变量前加上&,得到变量在内存中的地址,内存会被划分成以字节为单位,一块一块的空间,没一个空间都有唯一的标识,就是内存地址。

2 在地址前使用*寻址符号,得到该地址保存的数据,值

 #include <stdio.h>

 int main()
{
int i =;
printf("i的地址:%p\n",&i);
//通过*号 根据内存地址 找到内存中的值
printf("i的值:%d\n",*&i);
return ;
}

ASC码表字符查值码:

 #include <stdio.h>

 int main()
{
char ch;
int i = ;
printf("请输入要查询的字符:\n");
scanf("%c",&ch);
printf("%c对应的数值是:%d\n",ch,ch);
for (i; i <= ; i++) {
scanf("%*c%c",&ch);
printf("%c对应的数值是:%d\n",ch,ch);
}
return ;
}

ASC码表值查字符码:

 #include <stdio.h>

 int main()
{
char ch;
int d;
int i = ;
printf("请输入要查询的数值:\n");
scanf("%d",&d);
printf("%d对应的字符是:%c\n",d,d);
for (i; i <= ; i++) {
scanf("%*c%d",&d);
printf("%d对应的字符是:%c\n",d,d);
}
return ;
}

05-C语言运算符的更多相关文章

  1. C语言运算符优先级和ASCII表

    1. C语言运算符优先级及结合性 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成 ...

  2. C语言运算符和优先级

    关于C语言运算符和优先级,经整理众多博客资料汇入自己的实战,如下:        a.算术运算        C语言一共有34种运算符,包括常见的加减乘除运算.        1) 加法:+ 还可以表 ...

  3. 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等

    [源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native  ...

  4. 一道c语言运算符优先级问题

    一道c语言运算符优先级问题 #include <iostream> using namespace std; int main() { char test[] = {"This ...

  5. [转]说说C语言运算符的“优先级”与“结合性”

    补充自己的一点理解: 1.关于++i 与 i++的区别. ++i 和 i++如果是单独使用的语句,即二者后面均加上分号,或者其他单独使用的语句,没有任何区别.例如: for(i=0;i<100; ...

  6. 李洪强-C语言7-C语言运算符

    C语言运算符 一.算术运算 C语言一共有34种运算符,包括常见的加减乘除运算. ①. 加法:+ 还可以表示正号 ②. 减法:- 还可以表示负号 ③. 乘法:* 非数学意义上的X ④. 除法:/  注意 ...

  7. C语言的本质(7)——C语言运算符大全

    C语言的本质(7)--C语言运算符大全 C语言的结合方向 C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左).例如算术运算符的结合性是自左至右,即先左后右.如有表达式 x- ...

  8. C语言运算符优先级总结

    一 写在开头1.1 本文内容本文内容为C语言中运算符优先级的总结.转载于:https://blog.csdn.net/huangblog/article/details/8271791,感谢原作者的付 ...

  9. 说说C语言运算符的“优先级”与“结合性”

    论坛和博客上常常看到关于C语言中运算符的迷惑,甚至是错误的解读.这样的迷惑或解读大都发生在表达式中存在着较为复杂的副作用时.但从本质上看,仍然是概念理解上的偏差.本文试图通过对三个典型表达式的分析,集 ...

  10. C语言运算符优先级及结合性

    今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...

随机推荐

  1. Loading Image

    Android doesn’t handle animated gifs, but here’s one way to display an animated loading image that i ...

  2. sql server dateadd()

    定义和用法 DATEADD() 函数在日期中添加或减去指定的时间间隔. 语法 DATEADD(datepart,number,date) date 参数是合法的日期表达式.number 是您希望添加的 ...

  3. JavaScript之向文档中添加元素和内容的方法

    一.非DOM方法添加 1.document.write() <html xmlns="http://www.w3.org/1999/xhtml"> <head&g ...

  4. 浅谈Hash函数

    什么是hash函数: hash函数也可以翻译成“散列”函数,一般就使用音译“哈希”函数,简单的说哈希函数是对任意长度的输入进行的压缩映射,所谓的压缩映射顾名思义,输出通常来说要比输入短,并且得到的输出 ...

  5. BZOJ 1407: [Noi2002]Savage( 数论 )

    枚举答案, 然后O(N^2)枚举野人去判他们是否会在有生之年存在同山洞. 具体做法就是: 设第x年相遇, 则 Ci+x*Pi=Cj+x*Pj (mod M), 然后解同余方程. 复杂度应该是O(ans ...

  6. mvn command is not recognized as an internal or external command

    even though I have configured %m2_home% and %path% correctly, the command "mvn" is still n ...

  7. day6_python学习笔记_chapter8_条件,循环

    1. if elif else 2. 条件表达式:三元操作符: smaller = x if x < y else y   == if x < y : smaller =x  else : ...

  8. MySQL5.7.11(ZIP)安装

    1.环境变量-系统变量: Path添加:;D:\worksoftware\mysql-5.7.11\bin 2.配置更改:my-default.ini,注意是ANSI编码 添加 #(mysql所在目录 ...

  9. jquery中的uploadfile关于图片上上传的插件的应用

    ajaxFileUpload是一个异步上传文件的jQuery插件. 传一个不知道什么版本的上来,以后不用到处找了. 语法:$.ajaxFileUpload([options]) options参数说明 ...

  10. zoj 3171 The Hidden 7's

    这道题,我在网上看到两种dp,不过基本原理是一样的,不过感觉还是后面的一种比较巧妙!因为我对动态不是很熟,自能加上一些自己的理解,写上注释. 1) #include <stdio.h> # ...