最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言簡(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 語言中只規(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+ 后編譯器覺得符合語法規(guī)則,繼續(xù)往下找,當(dāng)出現(xiàn) ++i++時(shí)編譯器感覺不對(duì),開始計(jì)算,就變成 1++,這是不合法的,所以編譯器就會(huì)報(bào)錯(cuò)。

空格可以作為C語言中一個(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)算中的行為可能不同
  • 編譯器通過貪心法處理表達(dá)式中的子表達(dá)式
  • 空格可以作為C語言中一個(gè)完整符號(hào)的休止符
  • 編譯器讀入空格后立即對(duì)之前讀入的符號(hào)進(jìn)行處理

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

相關(guān)文章

  • C/C++ 宏詳細(xì)解析

    C/C++ 宏詳細(xì)解析

    關(guān)于宏的一些語法問題,可以在google上找到。相信我,你對(duì)于宏的了解絕對(duì)沒你想象的那么多。如果你還不知道#和##,也不知道prescan,那么你肯定對(duì)宏的了解不夠
    2013-09-09
  • C++ OpenGL實(shí)現(xiàn)三角形的繪制

    C++ OpenGL實(shí)現(xiàn)三角形的繪制

    這篇文章主要主要為大家詳細(xì)介紹了如何利用C++和OpenGL實(shí)現(xiàn)三角形的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手嘗試一下
    2022-06-06
  • C語言數(shù)據(jù)結(jié)構(gòu)之單鏈表的實(shí)現(xiàn)

    C語言數(shù)據(jù)結(jié)構(gòu)之單鏈表的實(shí)現(xiàn)

    鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。本文將用C語言實(shí)現(xiàn)單鏈表,需要的可以參考一下
    2022-06-06
  • C語言柔性數(shù)組實(shí)例詳解

    C語言柔性數(shù)組實(shí)例詳解

    這篇文章主要介紹了C語言柔性數(shù)組,通過實(shí)例分析了不完整類型、結(jié)構(gòu)體及柔性數(shù)組等概念,需要的朋友可以參考下
    2014-09-09
  • 約瑟夫環(huán)問題(數(shù)組法)c語言實(shí)現(xiàn)

    約瑟夫環(huán)問題(數(shù)組法)c語言實(shí)現(xiàn)

    這篇文章主要介紹了約瑟夫環(huán)問題(數(shù)組法)c語言實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-12-12
  • 基于C語言實(shí)現(xiàn)見縫插針游戲的示例代碼

    基于C語言實(shí)現(xiàn)見縫插針游戲的示例代碼

    見縫插針游戲就是使用鼠標(biāo)左鍵點(diǎn)擊發(fā)射針,當(dāng)兩個(gè)針的夾角小于一定限制時(shí),游戲結(jié)束。本文將用C語言實(shí)現(xiàn)這一有趣游戲,感興趣的可以了解一下
    2022-11-11
  • C語言實(shí)現(xiàn)在控制臺(tái)打印余弦曲線

    C語言實(shí)現(xiàn)在控制臺(tái)打印余弦曲線

    余弦曲線又叫余弦波(cosinwave),是一種來自數(shù)學(xué)三角函數(shù)中的余弦比例的曲線。這篇文章主要為大家介紹了如何在控制臺(tái)繪制余弦曲線,感興趣的可以了解一下
    2023-02-02
  • C語言實(shí)現(xiàn)BMP圖像開運(yùn)算處理

    C語言實(shí)現(xiàn)BMP圖像開運(yùn)算處理

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)BMP圖像開運(yùn)算處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++中的多態(tài)詳談

    C++中的多態(tài)詳談

    多態(tài)通俗來說就是多種形態(tài),本文通過實(shí)例代碼給大家介紹C++中的多態(tài)定義及實(shí)現(xiàn),通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-05-05
  • C++中什么是虛函數(shù)

    C++中什么是虛函數(shù)

    虛函數(shù)是C++中的一種機(jī)制,允許在基類中聲明一個(gè)函數(shù),并在派生類中對(duì)其進(jìn)行重新定義,從而實(shí)現(xiàn)多態(tài)性,虛函數(shù)通過基類指針或引用調(diào)用派生類的函數(shù),實(shí)現(xiàn)運(yùn)行時(shí)綁定,虛函數(shù)的關(guān)鍵是使用`virtual`關(guān)鍵字修飾函數(shù)聲明,并且虛函數(shù)可以有默認(rèn)實(shí)現(xiàn),也可以是純虛函數(shù)
    2025-01-01

最新評(píng)論

互助| 页游| 措勤县| 疏附县| 鸡东县| 德庆县| 镇原县| 宁陕县| 柏乡县| 博爱县| 东明县| 益阳市| 洛宁县| 当涂县| 铁岭市| 九台市| 星座| 波密县| 达日县| 康定县| 宾川县| 财经| 高陵县| 玉树县| 沅陵县| 安义县| 探索| 正安县| 浦北县| 宁海县| 玉树县| 修水县| 平山县| 大足县| 高青县| 庆城县| 天台县| 新和县| 周口市| 新巴尔虎右旗| 墨竹工卡县|