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

C/CPP運算優(yōu)先級的坑及解決

 更新時間:2023年08月04日 16:06:34   作者:_不會dp不改名_  
這篇文章主要介紹了C/CPP運算優(yōu)先級的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

C/CPP運算優(yōu)先級坑

1. 位運算優(yōu)先級低于比較運算符

做leetcode時遇到的,判斷一個數某一比特位是否為0。

if ( val & 2 == 0) {
	// do someting...
}

萬萬沒想到&運算符的優(yōu)先級是低于==的,debug了好久,得加上括號。

1.1 驗證

#include <iostream>
int main( int argc, char *argv[]){
    int val = 2;
    if ( val & 1 == 0) {
        std::cout << "without (): bit 1 is 0" << std::endl;
    }
    else {
        std::cout << "without (): bit 1 is 1" << std::endl;
    }
    if ( (val & 1) == 0) {
        std::cout << "with (): bit 1 is 0" << std::endl;
    }
    else {
        std::cout << "with (): bit 1 is 0" << std::endl;
    }
    return 0;
}

輸出結果為

without (): bit 1 is 1
with (): bit 1 is 0

2. 移位運算符優(yōu)先級低于算術運算符

這是在寫二分的時候遇到的, l + (r-l) >> 1 的值永遠為r >> 1

應該寫作l + (r - l >> 2)。

2.1 驗證

#include <iostream>
int main( int argc, char *argv[]){
    int l = 2, r = 8;
    int mid = l + (r - l) >> 1;
    int mid2 = l + ( r - l >> 1);
    std::cout << "mid: " << mid << std::endl;
    std::cout << "mid2: " << mid2 << std::endl;
    return 0;
}

輸出結果為

mid: 4
mid2: 5

C語言運算優(yōu)先級口訣

C語言常用運算符的優(yōu)先級口訣是:“單算關邏條賦逗”;

如果加入位運算符,完整口訣是:“單算移關與,異或邏條賦”。

  • “單”表示單目運算符:邏輯非(!),按位取反(~),自增(++),自減(--),取地址(&),取值(*);
  • “算”表示算術運算符:乘、除和求余(*,/,%)級別高于加減(+,-);
  • “移”表示按位左移(<<)和位右移(>>);
  • “關”表示關系運算符:大小關系(>,>=,<,<=)級別高于相等不相等關系(==,!=);
  • “與”表示按位與(&);
  • “異”表示按位異或(^);
  • “或”表示按位或(|);
  • “邏”表示邏輯運算符:邏輯與(&&)級別高于邏輯或(||);
  • “條”表示條件運算符(? :);
  • “賦”表示賦值運算符(=,+=,-=,*=,/=,%=,>>=,<<=,&=,^=, |=,!=);

另,逗號運算符(,) 級別最低,口訣中沒有表述,需另加記憶..

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 正確理解C++的構造函數和析構函數

    正確理解C++的構造函數和析構函數

    在C++的學習中,可以把類當作一個模具,類實例化出來的對象就是根據這個模具所產生的實體,對象看作是自己創(chuàng)建的一個新的數據類型。本文主要介紹了類對象通過拷貝函數進行初始化,分析類對象的內存模型,以及通過this指針實現更復雜的功能。最后介紹了析構函數的基礎知識
    2021-06-06
  • Visual Studio調試C/C++教程指南

    Visual Studio調試C/C++教程指南

    VisualStudio是微軟開發(fā)的一款集成開發(fā)環(huán)境軟件,本文主要介紹了Visual Studio調試C/C++教程指南,熟悉地掌握基于VS的C/C++調試技術,可以大幅提升調試性能,感興趣的可以了解一下
    2024-06-06
  • 解析C++中的for循環(huán)以及基于范圍的for語句使用

    解析C++中的for循環(huán)以及基于范圍的for語句使用

    這篇文章主要介紹了解析C++中的for循環(huán)以及基于范圍的for語句使用,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01
  • C++實現LeetCode(57.插入區(qū)間)

    C++實現LeetCode(57.插入區(qū)間)

    這篇文章主要介紹了C++實現LeetCode(57.插入區(qū)間),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C語言中的socket編程實例代碼

    C語言中的socket編程實例代碼

    這篇文章主要介紹了如何用C語言實現socket編程,文中代碼非常詳細,供大家學習參考,感興趣的朋友可以了解下
    2020-06-06
  • C++實現動態(tài)煙花效果

    C++實現動態(tài)煙花效果

    這篇文章主要介紹了利用C++實現的放煙花程序,用到了EGE圖形庫,文中的示例代碼講解詳細,對我們學習C++有一定幫助,需要的可以參考一下
    2022-01-01
  • 最新評論