1. 基本的單片機c語言編程問題P1=0xff高電平
51單片機是8位的,意思就是每一組埠都有8個位;轉換成2進制為1111 1111,10進制為255,16進制為0xff,
比如我現在要讓P1口全亮(高電平為亮),那麼是不是P1^0到P1^7這個8個埠全部為1,那麼就為:
P1 = 2#1111 1111;但是在keil軟體中不可以用2進製表示,那麼我們就用10進制或16進制來賦值,
P1 = 0XFF;
P1 = 255;
如果 P1 = 0X01,這個意思就是P1^0這個埠為1,其它的埠都為0;
你主要是進制沒學好,回去復習下各種進制轉換就好了.
2. C語言中表達式是如何運算的那些運算符什麼意思
表達式在編譯時,計算機是這么理解的,先把表達示全部壓入棧內,然後再彈出,如果發現彈出的是運算符,則等到再彈出另一個運算符,比較兩個運算符的優先順序,如果前者優先或同級的話,則將運算符的前一個出棧數和後一個出棧數進行該運算符的運算,然後把運算結果入棧;如果優先順序小的話,則再繼續彈出棧頂元素.直到有一個運算符被運算,並且結果入棧,然後把未使用的出棧數和出棧運算符,按出棧的先後再次入棧(先出後入,後出先入).最後整個表達示得出結果.
這個過程一般被理解為按右結合.
比如表達示:
x=x*x+4^y+5+6+7
x=3;
則x的求值過程為:
x=4*4+4^2+5+13
x=x*x+4^2+18
x=x*x+34
x=9+34
x=43
賦值運算符的優先順序一般最小,是最後計算的.所以得出43的值再賦值給x
-=,+=,*=,/=也算是賦值運算符,他們叫做復合運算符,和賦值運算符同一優先順序,按右結合原則運算.
我再補充一點吧
以下全部引用自:(<<C語言編程寶典>>)
各個運算符:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
————————————————————————————
+ 加, 一目取正
- 減, 一目取負
* 乘
/ 除
% 取模
-- 減1
++ 加1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
—————————————————————————————
&& 邏輯與
|| 邏輯或
! 邏輯非
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
—————————————————————————————
> 大於
>= 大於等於
< 小於
<= 小於等於
== 等於
!= 不等於
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符 作用
————————————————————————————
& 位邏輯與
| 位邏輯或
^ 位邏輯異或
- 位邏輯反
>> 右移
<< 左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Turbo C運算符的優先次序
━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━
表達式 ┃優先順序
————————————————————————————╂————
()(小括弧) [](數組下標) .(結構成員) ->(指針型結構成員)┃ 最高
————————————————————————————┃ ↑
!(邏輯非) .(位取反) -(負號) ++(加1) --(減1) &(變數地址)┃ │
————————————————————————————┃ │
*(指針所指內容) type(函數說明) sizeof(長度計算) ┃ │
————————————————————————————┃ │
*(乘) /(除) %(取模) ┃ │
————————————————————————————┃ │
+(加) -(減) ┃ │
————————————————————————————┃ │
<<(位左移) >>(位右移) ┃ │
————————————————————————————┃ │
<(小於) <=(小於等於) >(大於) >=(大於等於) ┃ │
————————————————————————————┃ │
==(等於) !=(不等於) ┃ │
————————————————————————————┃ │
&(位與) ┃ │
————————————————————————————┃ │
^(位異或) ┃ │
————————————————————————————┃ │
|(位或) ┃ │
————————————————————————————┃ │
&&(邏輯與) ┃ │
————————————————————————————┃ │
||(邏輯或) ┃ │
————————————————————————————┃ │
?:(?表達式) ┃ │
————————————————————————————┃ │
= += -=(聯合操作) ┃ │
————————————————————————————┃ │
,(逗號運算符) ┃ 最低
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. 求C語言中各類運算符的高低級別要各種,全面的!
優先順序 最大為1 最小為15
1 . [] () -> 從左向右結合
2 ++ -- * & ! ~ sizeof 從右向左一次結合 ( * 指針運算)
3 / * % (*為乘號) 從左向右結合
4 + - 從左向右結合
5 >> << 從左向右結合
6 <= >= < > 從左向右結合
7 == != 從左向右結合
8 & 從左向右結合
9 ^ 從左向右結合
10 | 從左向右結合
11 && 從左向右結合
12 || 從左向右結合
13 ?: 右向左一次結合
14 賦值運算符 如 = <<= += 等 右向左一次結合
15 逗號表達式 ,
4. C語言運算符與表達式問題
++x 是在本句中先將x的值+1,然後使用+1後的值
y++ 是先使用原值,然後在以後使用+1的值
這樣在printf語句中 ++x即 4, y++為3
但是(++x,y++)是一個表達式,只能有一個值,這個值是3,因為取的是逗號運算符後的值作為整個表達式的值(逗號運算符的性質如此)
而z+2則作為臨時變數值顯然是3
所以出來了3,3
5. C語言 什麼是表達式
C語言表達式的定義是:用C語言運算符將運算對象連接起來的式子,就叫表達式。
C語言在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。
當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則就會顯得十分重要。
基本構成:
數據類型:C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
常量與變數:常量其值不可改變,符號常量名通常用大寫。
變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。
數組:如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,中括弧內的索引值是從0算起的。
指針:如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。
指針不僅可以是變數的地址,還可以是數組、數組元素、函數的地址。通過指針作為形式參數可以在函數的調用過程得到一個以上的返回值,不同於return(z)這樣的僅能得到一個返回值。
字元串:C語言的字元串其實就是以'