【C语言基础】C语言初步认识(2)

22 篇文章 15 订阅

目录

1.按位取反

2.自动运算

3.逻辑运算符

4.条件运算符

5.下标引用、函数调用运算符

6.关键字

7.常用关键字

8.#define定义常量

9.指针 

10.计算机 存储数据


1.按位取反

~: 按(2进制)位取反

  • 整型数据数值是以补码的形式表示的,正数补码与原码相同
  • 对于有符号正数,计算机内存中最左边表示符号位,0为正 1为负
  • 负数的补码是将该数绝对值的二进制形式按位取反后再加1得到的
  • 整数的补码是将该数绝对值的二进制形式安慰去饭后再减1得到的
  • 原码直接按照正负写出的二进制序列(符号位不变)
  • 负数在计算机存储中用补码存储
#include <stdio.h>
int main()
{
//补码 ——> 反码 ——> 原码码
//负数在内存中存储的时候,存储的是二进制的代码
//00000000000000000000000000000000 -二进制码
//11111111111111111111111111111111 -补码
//11111111111111111111111111111110 -反码
//10000000000000000000000000000001 -原码(反码-1)

   int a = 0;
   int b = ~a;
   printf("%d\n", b);

   return 0;
}

 2.自动运算

  • 后置++:a的值赋予b,然后再给a+1
  • 前置++:先给a+1,再赋a+1的值予b
  • 后置--:a的值赋予b,然后再给a-1
  • 前置--:先给a-1,再赋a-1的值予b
#include <stdio.h>
int main()
{
   int a = 10;
   int b = a++;//后置++,先使用,再++
   //a = 11,b = 10

   int b = ++a;//前置++,先++,后使用
   //a = 11,b = 11

   int b = a--;//后置--,先使用,再--
   //a = 9 ,b = 10

   int b = --a;//前置--,先--,后使用
   //a = 9 , b = 9

   printf("a = %d b = %d\n", a, b);
   return 0;
}

  3.逻辑运算符

#include <stdio.h>
int main()
{
   //真 - 非0
   //假 - 0
   //&& - 逻辑与
   //|| - 逻辑或
   int a = 0;
   int b = 5;
   int c = a || b;
   printf("c = %d\n", c);//逻辑中两变量都为1则为1,只要有一个为0则为0

   int c = a && b;
   printf("c = %d\n", c);//逻辑中两变量其中一个为1则为1,否则为0

   return 0;
}

4.条件运算符

#include <stdio.h>
int main()
{
   int a = 10;
   int b = 20;
   int max = 0;
   max = (a > b ? a : b);
   //同等于
   if (a > b)
   {
      max = a;
   }
   else
   {
      max = b;
   }

   printf("最大值是:%d\n", max);
   return 0;
}

5.下标引用、函数调用运算符

  • [ ]:下标引用操作符
  • ( ):函数调用操作符
#include <stdio.h>
int Add(int x,int y)
{
   int z = 0;
   z = x + y;
   return z;
}
int main()
{
   int arr[10] = {0};
   arr[4];//[] - 下表引用运算符

   int a = 10;
   int b = 20;
   int sum =Add(a, b);//() -- 函数调用运算符

   return 0;
}

6.关键字

关键字说明
auto声明自动变量
short声明短整型变量或函数
int声明整型变量或函数
long声明长整型变量或函数
float声明浮点型变量或函数
double声明双精度变量或函数
char声明字符型变量或函数
struct声明结构体变量或函数
union声明共用数据类型
enum声明枚举类型
typedef用以给数据类型取别名/定义
const声明只读变量
unsigned声明无符号类型变量或函数
signed声明有符号类型变量或函数
extern声明变量是在其他文件正声明
register声明寄存器变量
static声明静态变量
volatile说明变量在程序执行中可被隐含地改变
void声明函数无返回值或无参数,声明无类型指针
if条件语句
else条件语句否定分支(与 if 连用)
switch用于开关语句
case开关语句分支
for一种循环语句
do循环语句的循环体
while循环语句的循环条件
goto无条件跳转语句
continue结束当前循环,开始下一轮循环
break跳出当前循环
default开关语句中的“其他”分支
sizeof计算数据类型长度
return子程序返回语句(可以带参数,也可不带参数)循环条件

7.常用关键字

(1)typedef:类型定义 -类型重定义

#include <stdio.h>
int main()
{
   typedef unsigned int u_int;
   unsigned int num1 = 0;
   u_int num2 = 0;

   return 0;
}

(2)static

  • static 修饰局部变量延长局部变量的生命周期
  • static 修饰全局变量改变了变量的作用域
  • 改变了变量的作用域让静态的全局变量只能在自己的所在的源文件内部使用 出了源文件就没法再使用了
  • static 修饰函数也是改变了函数的作用域
  • static修饰函数改变了函数的链接属性
  • 外部链接属性 ——> 内部链接属性

代码1:

#include <stdio.h>

void test()
{
   static int a = 1;//a 是一个静态的局部变量
   a++;
   printf("a =%d\n", a);//2 3 4 5 6
}
int main()
{
   int i = 0;
   while (i<5)
   {
      test();
      i++;
   }
   return 0;
}

代码2:

#include <stdio.h>
void test()
{
    static int i = 0;
    i++;
    printf("%d", i);
}
int main()
{
    int i = 0;
    for(i = 0; i < 10; i++)
    {
        test();
    }

    return 0;
}

8.#define定义常量

  • #define 定义标识符常量

  • #define 可以定义宏-带参数

#include <stdio.h>

int Max(int x, int y)
{
    if (x > y)
        return x;
    else 
        return y;
}
//宏的定义
#define MAX(X,Y) (X>Y?X:Y)

int main()
{
    int a = 10;
    int b = 20;
    int max = Max(a, b);
    printf("max = %d\n", max);
    //宏的方式
    max = MAX(a, b);
    //max = (a>b?a:b)
    printf("max = %d\n", max);
    getchar();
    return 0;
}

9.指针 

  • 指针变量:一种是用来存放地址的变量
  • 指针大小在32位平台是4个字节,64位平台是8个字节
#include <stdio.h>
int main()
{
    int a = 10;//申请了4个字节的空间
    printf("%p\n", &a);
    int* p = &a;//取地址(随机)
    //p是一个变量-指针变量
    printf("%p\n", p);
    *p = 20;//- 解引用操作符/间接访问操作符
    printf("a = %d\n", a);

    return 0;
}

 

10.计算机 存储数据

  • 硬盘
  • 内存——CPU
  • 高速缓存
  • 寄存器——CPU

11.结构体

  • struct - 结构体关键字
  • 结构体:属于复杂对象,是我们自己创造出来的一种类型
  • strcpy(string copy):字符串拷贝-用到库函数-string.h
  • 赋值按照定义的变量顺序进行
#include <stdio.h>
#include <string.h>
//创建一个结构体类型
struct Book
{
    char name[20];
    short price;//55
};
int main()
{
    //利用结构体类型创建一个该类型的结构体变量
    struct Book b1 = {"C语言程序设计", 55};
    struct Book* pb = &b1;
    //利用pb打印出我的书名和价格

    // -> 结构体指针使用->
    printf("%s\n",pb->name);
    printf("%d\n",pb->price);

    // .  结构体实用变量使用.成员
    printf("%s\n", b1.name);
    printf("%d\n", b1.price);
    //同理用*指针
    printf("%s\n",(*pb).name);
    printf("%d\n",(*pb).price);

    b1.price = 15;
    printf("%d\n", b1.price);
    //赋值按照定义的变量顺序进行

    strcpy(b1.name, "C++");
    printf("%s\n", b1.name);

    return 0;
}
  • 30
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HyDraZya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值