• C语言注意事项


    一、关于typedef与#define的相似之处

    例如:typedef int COUNT;
               #define COUNT int

    作用:都是用COUNT代表int,但事实上,二者是不同的。#define是在预编译时处理的,只能作简单的字符串替换,而typedef是在编译时处理的,并不是作简单的字符串替换,而是声明一个类型。

    二、有关整型的数据类型

    数据类型 含义
    int p; 定义整型变量p
    int *p;  p为指向整型数据的指针变量
    int p[n];  定义整型数组p,它有n个元素
    int *p[n];  定义指针数组p,它由n个指向整型数据的指针元素组成
    int (*p)[n];  p为指向含n个元素的一维数组的指针变量
    int p(); p为带回整型函数值的函数
    int *p(); p为带回一个指针的函数,该指针指向整型数据
    int (*p)();  p为指向函数的指针,该函数返回一个整型值
    int **p;  p是一个指针变量,它指向一个指向整型数据的指针变量


    三、有关二维数组表达式的含义

    表达式 含义
    二维数组名,指向一维数组a[0],即0行首地址
    a[0]、*(a+0)、*a  0行0列元素地址
    a+1、&a[1]  1行首地址
    a[1]、*(a+1)+2、&a[1][2]  1行2列元素a[1][2]的地址
    *(a[1]+2)、*(*(a+1)+2)、a[1][2]  1行2列元素a[1][2]的值

    四、变量命名的规则

    (1)编译系统将大写和小写字母认为是两个不同的字符

    (2)建议变量名的长度最好不要超过8个字符

    (3)在选择变量名和其他标识符时,应做到“见名知意”,即选有含义的英文单词(或其缩写)作标识符

    (4)要求对所有用到的变量作强制定义,就是“先定义。后使用”

    五、C语言运算符优先级

    优先级

    运算符

    名称或含义

    使用形式

    结合方向

    说明

    1

    []

    数组下标

    数组名[常量表达式]

    左到右

    --

    ()

    圆括号

    (表达式)/函数名(形参表)

    --

    .

    成员选择(对象)

    对象.成员名

    --

    ->

    成员选择(指针)

    对象指针->成员名

    --

    2

    -

    负号运算符

    -表达式

    右到左

    单目运算符

    ~

    按位取反运算符

    ~表达式

    ++

    自增运算符

    ++变量名/变量名++

    --

    自减运算符

    --变量名/变量名--

    *

    取值运算符

    *指针变量

    &

    取地址运算符

    &变量名

    !

    逻辑非运算符

    !表达式

    (类型)

    强制类型转换

    (数据类型)表达式

    --

    sizeof

    长度运算符

    sizeof(表达式)

    --

    3

    /

    表达式/表达式

    左到右

    双目运算符

    *

    表达式*表达式

    %

    余数(取模)

    整型表达式%整型表达式

    4

    +

    表达式+表达式

    左到右

    双目运算符

    -

    表达式-表达式

    5

    << 

    左移

    变量<<表达式

    左到右

    双目运算符

    >> 

    右移

    变量>>表达式

    6

    大于

    表达式>表达式

    左到右

    双目运算符

    >=

    大于等于

    表达式>=表达式

    小于

    表达式<表达式

    <=

    小于等于

    表达式<=表达式

    7

    ==

    等于

    表达式==表达式

    左到右

    双目运算符

    !=

    不等于

    表达式!=  表达式

    8

    &

    按位与

    表达式&表达式

    左到右

    双目运算符

    9

    ^

    按位异或

    表达式^表达式

    左到右

    双目运算符

    10

    |

    按位或

    表达式|表达式

    左到右

    双目运算符

    11

    &&

    逻辑与

    表达式&&表达式

    左到右

    双目运算符

    12

    ||

    逻辑或

    表达式||表达式

    左到右

    双目运算符

    13

    ?:

    条件运算符

    表达式1?

    表达式2:  表达式3

    右到左

    三目运算符

    14

    =

    赋值运算符

    变量=表达式

    右到左

    --

    /=

    除后赋值

    变量/=表达式

    --

    *=

    乘后赋值

    变量*=表达式

    --

    %=

    取模后赋值

    变量%=表达式

    --

    +=

    加后赋值

    变量+=表达式

    --

    -=

    减后赋值

    变量-=表达式

    --

    <<=

    左移后赋值

    变量<<=表达式

    --

    >>=

    右移后赋值

    变量>>=表达式

    --

    &=

    按位与后赋值

    变量&=表达式

    --

    ^=

    按位异或后赋值

    变量^=表达式

    --

    |=

    按位或后赋值

    变量|=表达式

    --

    15

    逗号运算符

    表达式,表达式,…

    左到右

    --

    注意:

    同一优先级的运算符,运算次序由结合方向所决定。

    简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

  • 相关阅读:
    python爬虫慕课基础2
    python爬虫慕课基础1
    Xcode6中如何对scrollview进行自动布局(autolayout)
    iOS 图形编程总结
    iOS开发之数据存取
    自定义下拉刷新控件-CBStoreHouseRefreshControl
    'libxml/tree.h' file not found
    iPhone,iPad如何获取WIFI名称即SSID
    获得手机的ip
    一步一步教你做ios推送
  • 原文地址:https://www.cnblogs.com/xintong2021/p/12746605.html
Copyright © 2020-2023  润新知