C语言基础

1、变量:在运行过程当中可以改变
= : 左边:左值 右边:右值

#include<stdio.h>
int main()
{
     int a=10;//a为局部变量,放在栈上
}

作用域:花括号之间
生命周期:当前函数运行完 变量的内存就会系统自动回收
栈:先进后出

int a=10;
int b=20;

在这里插入图片描述在这里插入图片描述

int d;//error默认值为随机值
printf("%d\n",d);//报错 .不能够使用,未初始化的局部变量

局部变量必须为 数字,字母,下划线。
局部变量一定要初始化。
调试:
a、打断点
b、调试:逐过程,逐语句

char ch='高';
printf("%c\n",ch);//输出为?

为什么?
因为 char 本质上就是 int 类型,运算时会按照 int 类型进行计算,而程序中无法进行运算,所以未知。
2.常量:常量:在运行过程当中不可以改变
const:修饰的变量==》常变量 关键字

const int a=10;//定义一个常量,编译的时候确定它的值
const int b;
b=20;//错误,定义常变量的时候,一定要进行初始化

#define: 宏
预编译:宏替换,注释的替换(空格),头文件的引入。。。

#define SIZE 10
{
     int high=SIZE;
     printf("%d\n",high);//输出为10
}

3、运算符
():函数,提升优先级,强制转换类型
[]:数组元素下标(从0开始)
例:

int arr[5] = {1,2,3,4,5};
arr[0] = 2;
printf(”%d\n“,arr[5]);//0,1,2,3,4,5

->:指向符,引用结构体成员
!:逻辑非

int a=10;
printf(“%d\n”,!a);//输出0
printf(“%d\n”,!!a);//输出1

~:按位取反

11:0000 1011
~11:1111 0100

‘>>’:按位右移:相当于除法

11>>1:0 0000 101==>0000 0101==>5
11>>2:00 0000 10==>0000 0010==>2

<<:按位左移:相当于乘法

11<<1:000 1011 0==>0001 0110==>22
11<<2:00 1011 00==>0010 1100==>44

^:异或:相同为0,不同为1

11:0000 1011
13:0000 1101
11^13:0000 0110

与(取地址)

11&13:0000 1001

|:或

11|13:0000 1111

++:增1,–:减1

int a=10;
int b=a++;//b=10,后置++先运算后++
a++=11;
int c=10;
int d=++c;//d=11,前置++先++后运算
++c=11;

||或,&&与

int i=1;
int i2=0;
int i3=2;
if(i++||i1++||i2++)
{
    printf("is true\n");
}
else
{
    printf("is false\n");
}
printf("%d,%d,%d\n",i,i2,i3);//2,0,2

或关系中遇真则真,i=1,判断为真,i++,停止执行

int i=1;
int i2=0;
int i3=2;
if(i++&&i1++&&i2++)
{
    printf("is true\n");
}
else
{
    printf("is false\n");
}
printf("%d,%d,%d\n",i,i2,i3);//2,1,2

与关系中遇假则假,i=1,判断为真,i++,执行后一步,i2=0,判断为假,i2++,停止执行

-:减,求负
*:乘,指针

int a = 10;
int* p = &a;//*:代表指针
*p = 100;//*:间接访问符  ==> 解引用
printf("%d\n",a);//a=100
int **pp = &p;
**pp = 10000;
printf("%d\n",a);//a=1000

sizeof:求当前变量的字节数

int a = 10;
printf("%d\n",sizeof(a));//4
printf("%d\n",sizeof a );//4
printf("%d\n",sizeof (int) );//4
int *p = &a;
char *p2 = (char *)&a;
printf("%d\n",sizeof (p) );//4
printf("%d\n",sizeof (p2) );//4
//所有的指针,不管什么类型全部为4个字节
printf("%d\n",sizeof (++a) );//4  编译时期
printf("%d\n",a);  //11
printf("%d\n",sizeof (Fun()));//4
int arr[5] = {1,2,3,4,5};
printf("%d\n",sizeof (arr[5]));//4
printf("%d\n",sizeof (3+4.5));//8,遇到小数点,自动转换成double类型

/:除,%:整数求余

float f1 = 5/2;//2.000000
float f2 = (float)5/2;//2.500000
float f3 = (float)(5/2);//2.000000
float f4 = 5/(float)2;//2.500000
printf("%d\n",10%3);//1
printf("%d\n",-10%3);//-1
printf("%d\n",-10%-3);//1
printf("%d\n",10%-3);//-1

+=,-=,*=,/=,%=

int a=10;
a+=10;//a=a+10,a=20

<,<=:小于,小于等于
==:等于,=:赋值
!=:不等于
?: 三目运算符

int Max(int a,int b)
{
 return a > b ? a:b;//如果a>b,输出a,否则输出b
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值