這個不是容易與否的問題,而是合理性問題,計算機語言不是自然語言,是有明確定義和數學基礎的,從數學理論來看,位運算實際上是特殊的算術運算,位運算/移位運算的結果是數值,優先級應該和算術運算同一級別,而關系運算的結果是布爾型別,應該和邏輯運算同一級別,也就是位運算的優先級應該高于關系運算。而移位也應該向上提一點,和算術乘除同一優先級,而不應該低于加減的優先級(因為移位在數學上相當于乘除)。
實際上,C語言運算子優先級的問題早就有人提出過質疑,Ritchie在1982年就解釋過這個問題,他回應為什么& |優先級比==低,是因為最初設計C的時候是沒有邏輯運算子的,邏輯運算都用位運算替代,所以位運算的優先級就處于正常的邏輯運算優先級那個級別,后來增加了邏輯運算子,本來應該提升& |優先級高于==,但是已經積累了很多代碼,有很多if (a == b & c == d)這種寫法,為了兼容的緣故就沒有改優先級順序。
這個不是容易與否的問題,而是合理性問題,計算機語言不是自然語言,是有明確定義和數學基礎的,從數學理論來看,位運算實際上是特殊的算術運算,位運算/移位運算的結果是數值,優先級應該和算術運算同一級別,而關系運算的結果是布爾型別,應該和邏輯運算同一級別,也就是位運算的優先級應該高于關系運算。而移位也應該向上提一點,和算術乘除同一優先級,而不應該低于加減的優先級(因為移位在數學上相當于乘除)。
實際上,C語言運算子優先級的問題早就有人提出過質疑,Ritchie在1982年就解釋過這個問題,他回應為什么& |優先級比==低,是因為最初設計C的時候是沒有邏輯運算子的,邏輯運算都用位運算替代,所以位運算的優先級就處于正常的邏輯運算優先級那個級別,后來增加了邏輯運算子,本來應該提升& |優先級高于==,但是已經積累了很多代碼,有很多if (a == b & c == d)這種寫法,為了兼容的緣故就沒有改優先級順序。
眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......
值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......