c语言的一些注意事项

操作符是可以不使用加括号的,sizeof后可以加括号也可以不加括号
~对一个数的二进制按位取反操作符
整数(正数):原码,反码,补码一致
整数(负数):如-1
原码:1000000000000000000001
反码:1111111111111111111110//第一位符号位不变,其他位改变
补码:1111111111111111111111//在反码的基础上加1

define(宏)用于使用一个标识符来表示一个字符串
一般格式为:
#define 标识符 字符串
要注意的是边缘效应,用define来定义宏时最好定义的是数值而不是一个公式

#define x 5+4
#include<stdio.h >
int main()
{
    int a=3;
    int b;
    b=x*a;
    printf("%d",b);
    return 0;
}


期望值应该是27
而结果得出的却是17
这就是由于边缘效应导致的括号没了变成了3*5+4而不是希望的3*(5+4)

static关键字

可以将变量变为静态变量
局部变量
修饰局部变量时可以将运算后变量的值保存,不会因为下一次的运算而初始化
全局变量
修饰全局变量时让变量仅对当前文件生效,其他的文件无法用extern调用,其他的文件也可以再一次定义相同名称的变量,不会受到static修饰的变量名称的影响

条件操作符
格式exp1 ? exp2:exp3
a>b?a:b
等效代码
if(a>b)
{
    max=a
}
else
{
    max=b
}

逗号表达式
exp1,exp2.。。。expN
顺序是递进的
int d=(exp1,exp2,...,expN)
最后d的值为最后一个expN的值


=是赋值
==是表示比较

char[]定义的是一个字符数组
char*定义的是一个字符串指针

sizeof和strlen

sizeof是一个关键字,也可以看作一个运算符(计算字符在电脑中所占大小
计算数组的时候

strlen是一个函数(只针对于计算字符长度

关键字

break://循环程序中,跳出循环关键字
case//选择语句关键词
continue//循环关键词
(switch
case//选择语句关键字
default)
extern//外部变量、函数声明符号。从外部文件夹中引用函数
do—while//该关键字为先执行do的内容,在判断while内的条件
goto//跳转语句

变量类型
char,int,float,double,long,short
signed//有符号类型  -10,+20
unsigned//无符号类型
const//常变量关键字
enum//枚举关键字
extern//引用外部文件函数


register//寄存器变量关键字
只能修饰局部变量

a++和++a
结果打印出来不一样

 

#include<stdio.h>
int main()
{
    int a=1;
    int b=2;
    printf("%d\n",a++);//此处打印的数值为a,而不是a++。因为先执行的打印,打印后才是++
    printf("%d\n",a);
    printf("%d\n",++b);//此处先执行++再打印
return 0;
}

结果为

1

2

3


版权声明:本文为m0_59727182原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。