赞
踩
#include <stdio.h>
int main()
{
int a=5,b=6,c=7,d=8,m=2,n=2;
(m=a>b)&&(n=c>d);
printf("%d %d",m,n);
}
计算结果 0 0
电脑输出 0 2
截断法则:
逻辑与运算中 前边的表达式结果为假 后边的表达式不再执行 直接返回假
逻辑或运算中 前边的表达式结果为真 后边的表达式不再执行 直接返回真
0为假非0值为真
& | ^ ~ << >>
&位与:全1则1,有0则0
|位或:有1则1,全0则0
^异或:相同为0,不同为1
~取反:1----
<< 左移
>> 右移
三元置换方法(加法和减法)
适用于大多数情况,包括整数和浮点数。步骤如下:
a = a + b; // 将 a 和 b 的值相加,结果赋给 a
b = a - b; // 从上一步的 a 中减去 b 的原始值,得到 a 的原始值,赋给 b
a = a - b; // 现在 b 已经是 a 的原始值,从上一步的 a 中减去这个值,得到 b 的原始值,赋给 a
按位异或方法
这种方法只适用于整数类型,因为它利用了异或操作的性质:任何数与自身异或结果为0,任何数与0异或结果为该数本身。
a = a ^ b; // a 和 b 异或,结果赋给 a
b = a ^ b; // 将上一步的结果 a 与 b 异或,得到 a 的原始值,赋给 b
a = a ^ b; // 将上一步的结果 b 与 a 异或,得到 b 的原始值,赋给 a
原码、反码、补码
原码 | 反码 | 补码 | |
正数 | 相同 | 相同 | 相同 |
负数 | 相同 | 除符号位外,其他按位取反 | 反码+1 |
int 4字节=32位 1字节=8位
7 0000 0000 0000 0000 0000 0000 0000 0111
6 0000 0000 0000 0000 0000 0000 0000 0110
-6反码 1111 1111 1111 1111 1111 1111 1111 1001
-6补码 1111 1111 1111 1111 1111 1111 1111 1010
0111
1010
0010
2
置一公式:a|(1<<n)
置零公式:a&(~(1<<n))
sizeof(数据类型/变量名); 计算数据类型大小,以字节为单位
变量的字节大小
名字 | 字节大小 | 取值范围(了解) | |
int | 整型 | 4 | |
char | 字符型 | 1 | -2^7~2^7-1 |
short | 短整型 | 2 | |
long | 长整型 | 8 | |
float | 单精度浮点型 | 4 | |
double | 双精度浮点型 | 8 |
局部变量和全局变量的区别
局部变量 | 全局变量 | |
定义位置 | 函数体内部 | 函数体外部 |
初值 | 未初始化,值是随机值 | 未初始化,值是0 |
存储位置 | 栈区 | 全局区 |
生命周期 | 同当前函数体共存亡 | 同整个程序共存亡 |
作用域 | 当前函数体内部 | 整个程序 |
标识常量
格式:#define 宏名 常量值或表达式或代码段
宏名:一般用大写表示,为了和普通变量区分开
注意:先原样替换,再计算 宏函数可以传参数
sprintf函数在C语言中用于将数据格式化并写入到字符串中
sprintf(str,"%.1f",number);
#include<math.h>
开平方:sqrt()
用math.h库时 需要用gcc 文件名.c -o 文件名 -lm 来链接库后再运行
#include <stdio.h>
#define SQR(X) X*X
void main()
{
int a=10,k=2,m=1;
a /= SQR(k+m)/SQR(k+m);// a /= k+m*k+m/k+m*k+m; 10/7=1
printf("%d\n",a);
}
正确答案:1
#include<stdio.h>
#define M 5
#define N M+N
main()
{
int k;
k=N*N*5;//M+M*M+M*5 5+5*5+5*5=55
printf("%d\n",k);
}
正确答案:55
总结:截断法则 原码反码补码 局部变量和全局变量的区别 表示常量宏的定义 置一公式 置零公式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。