首页 > 其他分享 >5.函数6.数组7.操作符8.常见关键字9.#define定义的常量和宏

5.函数6.数组7.操作符8.常见关键字9.#define定义的常量和宏

时间:2023-04-02 18:08:55浏览次数:38  
标签:10 return 函数 int .# 操作符 20 define

在我们学习的数学里面,函数的概念例子比如

f(x) = 2*x+1;    f(x,y) = x+y;

在c语言也是同样的样子比如,我举例一条要相加的例子

#definr _

#include<stdio.h>

int Add(int x,int y)//int是他的返回类型是个整形,所以要加int

//这就是一个函数add是自己创建的一个函数名,括号里面叫做函数的参数

//大括号里面是一个函数体,函数体是要完成我们填的任务

{

          int z = x+y;//相加的两个数要创建一个int类型的变量把他存起来

        return z;//return z;叫返回z

}


 int main()

{

           int num1 = 10;

           int num2 = 20;//这两个数相加为30,程序运行的话也会算出30

          int sum = 0;//要定义为一个类型常量,不然会出错

       sum = Add(num1,num2);//使用自定义的函数把他们加起来,也可以使用库函数,但是在这里我们没用


        printf("相加的值为 = %d\n",sum);//这里就是打印

    return 0;//这就是函数最简单的使用方法

}

总结,函数的类型就是

类型+定义函数名(参数)

{

           函数体里面写下你的任务

              返回整形

}


int main()

{

            类型变量1 = 

           类型变量2 =

      创建类型仓库 = 

      相加

          打印

      返回

}

数组

数组的概念:’创建一个空间来放一组数‘

如果我要存储1-10的数字,怎么存储?

c语言中给定了数组的定义,一组相同类型元素的集合

int arr[10] = {1,2,3,4,5,6,7,8,9,10};

                     0    1   2   3   4   5   6    7    8   9    //这些就是下标,他们分别对应上面的数   

//这个就是定义一个int整形的存放10个整数数字的数组arr,他里面的数字要用按语法形式来写,这些数组里面的数字都有着对应的下标,下标从0开始。

下标的作用:是为了访问这个数组里面的元素

例如我们要打印这个数组里面的5,那5的下标是4,所以我们可以

arr[4];//访问数组的第五个元素

      printf(“%d\n”,arr[4]);

这时候就能打印出来了,程序执行,他的答案就是访问它的第五个元素,也就是5

那如果我要访问全部的元素,而不是只访问一个,那该怎么办?

我们可以用while循环语句实现,例如,我要打印数组里面全部的数字

#define _


#include<stdio.h>


 int main ()

{

          int i = 0;//创建一个变量i作为数的仓库

         while(i<10)//当i<10的时候停止

          {

                printf("%d\n",arr[i])//打印

                    i++;//i每次+1

           }

         return 0;

}

操作符

1.算数操作符

+   —    *    /      %

2.移位操作符

<<(左移)         >>(右移)

移动的是二进制位例如

int a = 1;//a创建了四个字节内存的空间里面存放的就是00000000000000000000000000000001

a<<1;//这个书写格式意思就是把a的二进制内容向左移动1位

//int是整形,占四个字节,每个字节是八个比特位,所以这里就是32个比特位,1转化位二进制就是01再用比特位去描述就是:00000000000000000000000000000001(a的二进制内容)

向左移动就是32个数里多余的0丢弃缺的补0例如

00000000000000000000000000000001向左移动一位就是00000000000000000000000000000010

这个二进制数列把他换算成10进制就变成了2


所以程序执行就是2

int main()

{

      int a = 1;

         int b =  a<<1;

    printf(“%d\n”,b);

       return 0;


}//这时候答案就是2,右移也是类似的效果

3.位操作符(二进制位)

&(按位与)     |(按位或)                ^ (按位异或)    

&(按位与)

与的计算规律是:两个数字的二进制数字并起来里面只要有一个是假,则为假也就是0

就比如 int a = 3;

int b = 5;

int c = a&b;

//3的二进制数字是011,5的二进制数字是101,所以

                          011

                          101

这个答案就是       ’001‘,然后转化成十进制就是1,程序执行,显示出来的就是1,计算机是以十进制来表示的,不是与二进制

|(按位或)

或的计算规律是:两个数的二进制只要有一个真,那他就是真,两个都是真的时候,他也是真

^(按位异或)

异或的计算规律是:对应的二进制位相同,则为假

对应的二进制位相异,则为真

4.赋值操作符(复合赋值符)

=(赋值)      +=      —=    *=       /=      &=     ^=    |=   >>=        <<=

=,有两种写法            第一种

int a = 10;      

a= 20

a = a+10;//给a+10之后在赋值给a

a+ = 10;//这两种写法完全等价的,这个写法是给a

自己加上10

类似的还有

a = a—20;

a—= 20;

a = a&20;

a& = 20;

5.单目操作符(与之相对应的还有双目操作符,三目操作符)

!      逻辑反操作    //c语言中我们有真假(0表示假非0表示真)的说法,逻辑反操作就是在他前面加上操作符,能把真(1)变假(0),把假变真

 -           负值

+           正值        没有实际价值,通常不写

&              取地址      

sizeof        计算变量/类型所占空间的大小(以字节为单位)

~               对一个数的二进制按位取反//原来是假的变成真,真的变成假

--               前置,后置--

++              前置,后置++//后置是先使用后++,前置 是先++在使用

*                 解引用操作符(间接访问操作符)

(类型)           强调类型转换

#define _

#include<stdio.h>
  
  int main()
{
      int a = (int)3.14;//int是整形类型,3.14是double类型,但是我要强制执行那就要使用强制类型转换了,在3.14前面使用int用括号括起来
          printf("%d\n",a);
       return 0;

}

6.关系操作符

  >           >=           <            <=           !=(不相等)        ==(相等)

7.逻辑操作符

&&(逻辑与)并且          ||(逻辑或)

&&例如

#define _

#include<stdio.h>

int main()
{
           int a = 3;//3是非0,为真
            int b = 5;//5是非0,也为真
               int c = a&&b;//a与b都是真,所以c的答案就是真,a为真&&(并且)n为真,所以结果为真
                   printf(%d\n",c);
               return 0;
}

||(逻辑或)

a或者b里面有一个为真,那就是真,两个都是真,那结果也是真

8.条件操作符(三目操作符)

exp1?  exp2  :  exp3

表达式一的结果如果为真,那就执行表达式二,表达式二的结果就是整个表达式的结果,如果表达式一的结果为假,那就是执行表达式三,表达式三就是整个表达式的结果

例如

#define _

#include<stdio.h>

int main()
{
          int a= 10;
          int b = 20;
          max = (a>b? a : b);
     if(a>b)
       max = a;
     else
       max = b;
           printf("%d\n",max);
         return 0;
  //如果a>b是真,那就执行表达式二,如果a>b是假,那就执行表达式三

}

9.逗号操作符

exp1,exp2,exp3,……expn

用逗号隔开的表达式叫做逗号表达式

10.下标引用,函数调用和结构成员

      []         ()           .           ->

   [](下标引用操作符)是用[]的形式访问元素,这个[]就是下标引用操作符

   ()(函数调用操作符)

   .    

  ->

11.常见关键字

auto(自动变量,通常会省略到)break(通常会在循环语句里面,停止的作用)   case  char  const   continue  default  do   double(小数点) else  enum(枚举)  
extern(引用外部符号) float  for(循环)   goto(语句)  if(语句)   int   long  register(寄存器关键字)    return   short  signed(定义有符号的变量,通常省略)
sizeof   static(静态) struct(结构体关键字)  switch  typedef(类型定义) union(联合体,共用体)  unsigned(定义无符号的变量)   void(无,空)  volatile  while(循环语句)

typedef-类型定义,类型重定义,例如

unsigned int num = 20;//这个叫做无符号的整型变量,但是这样看他有点长,哪我们可以重新给他起个名字
typedef unsigned int num u_int; //这样就重新给他起了个名字,叫u_int

static--修饰变量和函数(静态局部变量,静态全局变量,静态函数)

局部变量加上static ,就使他变成了静态局部变量,使局部变量生命周期变长了

全局变量加上static,就使他变成了改变了全局变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了内部源文件就无法使用。

函数加上static,改变了函数的链接属性,普通的一个函数一个外部函数是具有外部链接属性的,但是你加上了static修饰函数,他就不具有外部链接属性了。,就变成了内部链接属性

12.#define定义常量和宏

#define定义常量格式

#define _

#include<stdio.h>
#define MAX 100//意思就是我在这里定义了#define MAX为100,只要下面的代码块里面遇到MAX就一律视为100
int main()
{
     int a = MAX;//这里的MAX就是100
    return 0;


}

#define还定义宏-带参数

要明确的知道宏的定义,我们需要用函数来对比一下,我们用求两个数的较大值为目标来思考一下

int MAX(int x,int y)//这是函数定义写法,那如果我们要写成宏的定义写法是什么,举个例子
{
        if(x>y)//函数的写法,如果x>y为真,那就返回x,也就是会输出10,
          //否则就是返回y输出20
          return x;
        else 
          return y;

}

int main()
{
           int num1 = 10;
           int num2 = 20;
            int max = MAX(num1,num2);
             printf("%d\n",max);

                  return 0;

}

#define MAX(X,Y)  (X>Y?X:Y)//#define定义的宏使用到了条件操作符
int main()//意思就是x>y如果是真,那他就会执行第二条表达式,也就是X(num1),但是他这里是假,因为num1是10num2是20,所以10永远不可能大于二十所以为假,他就会执行第三条表达式也就是Y(num2)也就是答案就是20
{       int num1 = 10;//(x>Y?x:Y)就会替换成(num1>num2?num1:num2)
        int num2 = 20;//
       int max = MAX(num1,num2);//
       printf("%d\n",max);//num1是小于num2的,所以条件为假,就会执行第三条表达式Y(num2),也就是20
     return 0;
         




}






标签:10,return,函数,int,.#,操作符,20,define
From: https://blog.51cto.com/u_16031366/6164918

相关文章

  • .net6 制作elementplus离线文档
    1、新建net6项目设置配置信息<ProjectSdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>net6.0</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings>......
  • site-packages/flask/json/init.py from future import annotations future feature a
    如果在使用Flask库时,出现了“futurefeatureannotationsisnotdefined”的错误,可能是因为Python解释器版本太低。在Python3.7及以下版本中,from__future__importannotations是不支持的,因此需要升级到Python3.8或更高版本。如果升级Python解释器版本不可行,可以......
  • 面试题汇总(NO.1)
    3.31 day1#1.深浅拷贝是什么>-1.深浅拷贝是对数据进行复制不可变类型:深浅拷贝都是一样的重新拷贝一份数据可变类型:如果内部嵌套的还有不可变类型,-浅拷贝只拷贝第一层,嵌套拷贝的是内存地址,-......
  • CentOS7.2T以上磁盘挂载
    CentOS7.服务器挂载大于2T磁盘目录CentOS7.服务器挂载大于2T磁盘0.环境信息Linux原理1.详细挂载步骤1.1.查看当前系统磁盘使用情况1.2.查看是否有未知硬盘未挂载1.3.挂载硬盘-使用parted1.3.1.使用parted命令1.3.2.创建labelgptl执行两次1.3.3.依次录入yes/mkpart......
  • 在Ubuntu21.04上安装Redmine出现的一些问题
    安装参考文章:https://blog.csdn.net/q544344318/article/details/129118703前置条件:mysql#创建独立的用户,我使用root无法连接!!!CREATEUSER'redmine'@'localhost'IDENTIFIEDBY'password';#创建数据库,你也可以把redmine_development,redmine_test#创建出来,我三个都创建了......
  • VC6 在win11下运行出现 LINK : fatal error LNK1168: cannot open Debug/test.exe for
    写在前面vc6下载地址:https://softdown01.rbread04.cn/down/VC6.0green.rar?timestamp=6429444b&auth_key=e4fc373a1342be9ce2d6802419980ade注意:如果是win11则记得修改msdev名字修改兼容性和管理员运行才行 问题:最近用vc6学习逆向的时候出现的,记录下,方便查阅:LINK:fatal......
  • 05.项目的整体管理
    1.10大管理的要求1、按照顺序熟练背诵每个管理的所有过程,且能用自己的话描述出来;2、每个过程至少掌握一个工具或方法;3、每个管理有什么问题;4、与其他各大管理之间联系。2.项目整体管理2.1.整体管理概述1.项目整体管理知识领域包括识别、定义、结合、统一与协调项目......
  • A卡配置sovits4.0(AI配音/翻唱)详细步骤参考(Ubuntu20.04)
    之前用A卡配置过AI绘画,最近发现AI配音/翻唱挺火的,这里也来尝试一下。(N卡用户直接使用整合包就行,别来凑热闹)一、基础环境配置最开始的步骤还是一样,安装双系统、显卡驱动、ROCm,步骤和之前一样,就不重复写了,可以去看我之前Novel的文章https://www.cnblogs.com/strawberryPuddin......
  • leetcode 739.每日的温度 Java
    739.每日的温度给定一个整数数组temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。示例1:输入:temperatures=[73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,......
  • 9.点火游戏
    原题链接:https://www.acwing.com/problem/content/description/4226/#include<iostream>#include<cstring>#include<queue>usingnamespacestd;constintN=15,INF=0x3f3f3f3f;#definexfirst#defineysecondintn,m;typedefpair<int,int>......