亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語(yǔ)言簡(jiǎn)明講解操作符++和--的使用方法

 更新時(shí)間:2022年04月19日 15:17:49   作者:清風(fēng)自在 流水潺潺  
++和--運(yùn)算符分別是+=1和-=1的簡(jiǎn)寫。設(shè)計(jì)這樣兩個(gè)運(yùn)算符的本意是?便程序員,但i++和++i使?不恰當(dāng)有時(shí)候會(huì)造成混淆,反倒令剛?cè)腴T的C程序員有點(diǎn)混亂

一、++與--操作符的本質(zhì)

++ 和 -- 操作符對(duì)應(yīng)兩條匯編指令

前置

  • 變量自增(減)1
  • 取變量值

后置

  • 取變量值
  • 變量自增(減)1

下面看一段神奇的代碼:

#include <stdio.h> 
 
int main()
{
    int i = 0;
    int r = 0;
 
    r = (i++) + (i++) + (i++);
 
    printf("i = %d\n", i);
    printf("r = %d\n", r);
 
    r = (++i) + (++i) + (++i);
 
    printf("i = %d\n", i);
    printf("r = %d\n", r);
 
    return 0;
}

在 VS2012中,它的運(yùn)行結(jié)果如下:

在 gcc 編譯器中,它的運(yùn)行結(jié)果如下:

這是由于不同編譯器對(duì) ++ 和 -- 的相對(duì)哦執(zhí)行次序不一樣。

二、++與-- 操作符使用分析

  • C 語(yǔ)言中只規(guī)定了 ++ 和 -- 對(duì)應(yīng)指令的相對(duì)執(zhí)行次序
  • ++ 和 -- 對(duì)應(yīng)的匯編指令不一定連續(xù)運(yùn)行
  • 在混合運(yùn)算中,++ 和 -- 的匯編指令可能被打斷執(zhí)行

++ 和 -- 參與混合運(yùn)算結(jié)果是不確定的。

筆試面試中的“奇葩”題

貪心法:++,-- 表達(dá)式的閱讀技巧

  • 編譯器處理的每個(gè)符號(hào)應(yīng)該盡可能多的包含字符
  • 編譯器以從左向右的順序一個(gè)一個(gè)盡可能多的讀入字符
  • 當(dāng)讀入的字符不可能和已讀入的字符組成合法符號(hào)為止

下面看一段代碼:

#include <stdio.h>
 
int main()
{   
    int i = 0;
    int j = ++i+++i+++i;
    
    int a = 1;
    int b = 4;
    int c = a+++b;
    
    int* p = &a;
    
    b = b/ *p;
 
    printf("i = %d\n", i);
    printf("j = %d\n", j);
    printf("a = %d\n", a);
    printf("b = %d\n", b);
    printf("c = %d\n", c);
      
    return 0;
}

運(yùn)行后編譯器會(huì)報(bào)錯(cuò):

這行代碼為什么報(bào)錯(cuò)呢?int j = ++i+++i+++i; 原因就是編譯器發(fā)現(xiàn) ++i 后由于貪心,會(huì)繼續(xù)往下找,發(fā)現(xiàn) ++i+ 后編譯器覺(jué)得符合語(yǔ)法規(guī)則,繼續(xù)往下找,當(dāng)出現(xiàn) ++i++時(shí)編譯器感覺(jué)不對(duì),開(kāi)始計(jì)算,就變成 1++,這是不合法的,所以編譯器就會(huì)報(bào)錯(cuò)。

空格可以作為C語(yǔ)言中一個(gè)完整符號(hào)的休止符編譯器讀入空格后立即對(duì)之前讀入的符號(hào)進(jìn)行處理。

所以下面這么寫就可以:

#include <stdio.h>
 
int main()
{   
    int i = 0;
    int j = ++i + ++i + ++i;
    
    int a = 1;
    int b = 4;
    int c = a++ + b;
    
    int* p = &a;
    
    b = b/ *p;
 
    printf("i = %d\n", i);
    printf("j = %d\n", j);
    printf("a = %d\n", a);
    printf("b = %d\n", b);
    printf("c = %d\n", c);
      
    return 0;
}

編譯結(jié)果如下:

三、小結(jié)

  • ++ 和 -- 操作符在混合運(yùn)算中的行為可能不同
  • 編譯器通過(guò)貪心法處理表達(dá)式中的子表達(dá)式
  • 空格可以作為C語(yǔ)言中一個(gè)完整符號(hào)的休止符
  • 編譯器讀入空格后立即對(duì)之前讀入的符號(hào)進(jìn)行處理

到此這篇關(guān)于C語(yǔ)言簡(jiǎn)明講解操作符++和--的使用方法的文章就介紹到這了,更多相關(guān)C語(yǔ)言 ++和--內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用C++實(shí)現(xiàn)DBSCAN聚類算法

    用C++實(shí)現(xiàn)DBSCAN聚類算法

    本篇文章是對(duì)使用C++實(shí)現(xiàn)DBSCAN聚類算法的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 配置CLion管理Qt項(xiàng)目國(guó)際化支持的方法

    配置CLion管理Qt項(xiàng)目國(guó)際化支持的方法

    這篇文章主要介紹了配置CLion管理Qt項(xiàng)目國(guó)際化支持的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • QT實(shí)現(xiàn)串口通信的完整步驟

    QT實(shí)現(xiàn)串口通信的完整步驟

    如果用qt寫程序作為上位機(jī),然后通過(guò)和usb和下位機(jī)通信的時(shí)候,就需要用到qt中的串口通信了,下面這篇文章主要給大家介紹了關(guān)于QT實(shí)現(xiàn)串口通信的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • C/C++實(shí)現(xiàn)的游戲角色名稱名字隨機(jī)生成代碼

    C/C++實(shí)現(xiàn)的游戲角色名稱名字隨機(jī)生成代碼

    這篇文章主要介紹了C/C++實(shí)現(xiàn)的游戲角色名稱名字隨機(jī)生成代碼,本文特別針對(duì)一些古典游戲的角色名稱進(jìn)行隨機(jī)生成,需要的朋友可以參考下
    2015-05-05
  • C++實(shí)現(xiàn)LeetCode(101.判斷對(duì)稱樹(shù))

    C++實(shí)現(xiàn)LeetCode(101.判斷對(duì)稱樹(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(101.判斷對(duì)稱樹(shù)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言職工信息管理系統(tǒng)源碼

    C語(yǔ)言職工信息管理系統(tǒng)源碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言職工信息管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)門禁系統(tǒng)

    C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)門禁系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)門禁系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 超詳細(xì)解析C++實(shí)現(xiàn)歸并排序算法

    超詳細(xì)解析C++實(shí)現(xiàn)歸并排序算法

    歸并排序是比較穩(wěn)定的排序方法。它的基本思想是把待排序的元素分解成兩個(gè)規(guī)模大致相等的子序列。本文將用C++實(shí)現(xiàn)這一排序算法,需要的可以參考一下
    2022-09-09
  • C++實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    C++實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評(píng)論