1樓:育知同創教育
對於!(a+b)+c-1&&b+c/2 ,&&前後接兩個表示式,一個是!(a+b)+c-1,另一個是b+c/2 ,第一個表示式結果為c-1即2(因為(a+b)非0,故!
(a+b)結果為0),第二個表示式結果為6,所以這兩個表示式均為非零,所以它們進行邏輯與操作之後的結果為1
對於a || b+c&& b == c,||邏輯或操作符連線兩個表示式,但是第一個表示式為a,非0,故不用求後一個表示式的值,所以該表示式結果為1
在vs2010上執行通過
測試**如下:
int a=3,b=4,c=5 ;
int d = !(a+b)+c-1&&b+c/2;
int e = a || b+c&& b == c;
cout << d << endl ;
cout<< e;
2樓:己曼寒
int(number) 如果 number 為負數,則 int 返回小於或等於 number 的第一個負整數 例如,int 將 -5.1 轉換成 -6
b\2=6 整除
6 mod 5求餘數=1
結果:-6+1=-5
在vb中,若是a=20,b=30,則表示式(a+b)/2+abs(a-b)/2*5mod3^2的值是??求詳細一點的解答!!謝謝!
3樓:陽光的雷咩咩
a+b=50
50/2=25
a-b=-10
abs(-10)=10
10/2=5
5*5=25
3^2=9
25 mod 9=7
25+7=32
設a和b均為double型變數,且a=5.5,b=2.5,則表示式:(int)a+b/b的值是多少,為什麼
4樓:沈偉棟
(int)a+b/b=6.0。
(int)a = 5;對於b/b,因為b是double型別,所以它們的商也是一個double型別,為2.5/2.5 = 1.0(注意要在小數位上加一個0);
最後計算5 + 1.0 = 6.0,因為5是int型別,而1.
0是double型別,它們倆相加時,5將自動轉換成double型別資料5.0,從而實際參加運算的是:5.
0 + 1.0 = 6.0。
在c語言中,將一個double型別的資料強轉成int型別時,將會丟棄該資料的小數部分,而只保留它的整數部分。
強制型別轉換是通過型別轉換運算來實現的。其一般形式為:(型別說明符) (表示式) 其功能是把表示式的運算結果強制轉換成型別說明符所表示的型別。
擴充套件資料
數字資料型別有integer(整型)、long(長整型)、single(單精度浮點型)、double(雙精度浮點型)和 currency(貨幣型)。
型別說明符和表示式都必須加括號(單個變數可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。
無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的資料長度進行的臨時性轉換,而不改變資料說明時對該變數定義的型別。
5樓:匿名使用者
(int)a+b/b=6,應為(int)a就是將a取整,a取整後就是5(這裡不能用四捨五入取整,捨棄小數部分取整,然後b/b就是2.5/2.5等於1,故(int)a+b/b=6。
下圖是用python計算的結果。
6樓:匿名使用者
我這麼跟你解釋:
這個涉及到c語言中強制型別轉換的知識。
在c語言中,將一個double型別的資料強轉成int型別時,將會丟棄該資料的小數部分,而只保留它的整數部分,因此(int)a = 5;對於b/b,因為b是double型別,所以它們的商也是一個double型別,為2.5/2.5 = 1.
0(注意要在小數位上加一個0);最後計算5 + 1.0 = 6.0,因為5是int型別,而1.
0是double型別,它們倆相加時,5將自動轉換成double型別資料5.0,從而實際參加運算的是:5.
0 + 1.0 = 6.0.
最後告訴你一個轉換的法則:
double ←── float 高
↑long
↑unsigned
↑int ←── char,short 低
7樓:蟬鳴幽靜
答案是d,因為(int)a 是強制將a轉換為int型,可以得到(int)a=5; b是double型,b/b=1.000000;由於是int與double型相加,會將int型轉換為double型再相加,最終得到的答案是6.000000。
8樓:匿名使用者
(int)a+b/b
=5+1.0
=6.0 -------->結果是double型的。
9樓:匿名使用者
答案是d b/b=1.0 (int)a=5
(int)a+b/b=5+1.0=6.0
(int)只是作用於a,與b無關
10樓:匿名使用者
應該為6.000000,因為它是double型的。
11樓:匿名使用者
5+2.5/2.5=6
12樓:匿名使用者
因為:(int)a=5(強制型別轉換,抹去小數點後面的數),b/b=2.5/2.
5=1.0(double型)5+1.0=6(隱式型別轉換,講double 隱式轉換為 int型的1)
所以:(int)a+b/b=6
13樓:超越說
(int)a+b/b 的值是6 ,
優先順序:(int)強制型別轉換 > / 除號 > + 加號,先算(int)a,c語言不四捨五入,直接抹去小數部分,得到整數值5,然後算b/b,得值1,這個小學生都知道,
加起來就是6了。
14樓:匿名使用者
b/b=1,int a=5,5+1=6
設int a=5,b=6,表示式(++a==b--)?++a:--b的值是
15樓:匿名使用者
結果為bai7。
條件表示式
du為:表
zhi達式1?表示式2:表示式3。先求解dao表示式內1,若其值為真(非容0)則將表示式2的值作為整個表示式的取值,否則(表示式1的值為0)將表示式3的值作為整個表示式的取值。
先判斷++a==b--是否為真,++a表達的值為6,b--表達的值為6,兩者相等,為真。則將表示式++a的值作為整個表示式的取值,因為在此之前a的值已經自增變成6,再進行++a表示式的值為7。
16樓:匿名使用者
最後值為7,這是一個if語句,就是
int a=5,b=6;
if(++a==b--) ++a;
else --b;
++ar的規則
是先運算,所以括號中左值++a=6,a=6;
==的優先順序低版過--,所以先計算權b--b--的規則是先賦值,所以括號中右值b--=6,b=5;
左值6==右值6,即條件為真,執行++a,因為a值已是6, 所以加1操作後,
結果為 7
17樓:烏石
7,條件表示式條件為真,取值為++a;原來為6,執行++a後為7
設a和b均為double型變數,且a=5.5,b=2.5,則表示式(int)a+b/b的值是多少?
18樓:匿名使用者
答案應該是double型別。
(int)a+b/b等價於((int)a)+(b/b),這個根據運算的優先順序別可以得到。
(int)這個是強制型別轉換,強制轉換之後((int)a)就是整型。一般這個double轉化為int型別時多數平臺下是按照向零取整的方法,於是這一步強制型別轉化後,得到5.
b/b,除號兩邊都是double型別,得到的結果也是double型別。也就是1.000000;
第一步得到的5是int型別,int型別和double型別進行相加運算時,int型別會自動轉化為double型別再進行加法運算。
綜上所述有,整個表示式的結果是6.000000.
注意:在強制型別轉化時,a的型別還是double型別,保持不變。(int)這個強制轉化會產生一個新的中間變數,利用這個int型別的中間變數去進行接下來的運算。
以下是程式:
#include "stdio.h"
#include "stdlib.h"
int main()
程式結果是:
...c
86.000000
...a8
19樓:匿名使用者
是整形的,因為(int)a+b/b中/的優先順序比+高所以所以是先運算b/b結果是1,然後在加上(int)a最後結果是6
20樓:匿名使用者
先算b/b=1,a+b=6.5,結果應該是doubie…型別轉換…
21樓:匿名使用者
結果是6.0
是double型
22樓:穆璟褒悅可
首先考慮的是運算子的優先順序,“(int)”的括號屬於型別轉換運算子,它的優先順序高於“/”和“+”所以先運算“(int)a”結果是變數a強制轉換為int型,也就是由5.5變成5,然後“/”的優先順序高於“+”所以先算“b/b”得到一個double型的1.0000……值,剩下就是運算“+”,“+”左邊的資料型別為int型,右邊的資料型別為double型(不同型別的資料進行運算是要轉換成同一型別,然後再開始運算,起規則為:
char,short
->int->
unsigned
->long
->double
<-char
箭頭指向的方向是必定的轉換),所以是將“+”左邊的int型轉換為double型進行運算,結果為double型
a=-5.1,b=13,則vb表示式int(a)+b\2mod5的值為
23樓:育知同創教育
對於!bai(a+b)+c-1&&b+c/2 ,&&前後接兩個表達du式zhi,一個是
dao!回(a+b)+c-1,另一個是b+c/2 ,第一個表示式結果為c-1即2(因為(a+b)非0,故!(a+b)結果為0),第二個表示式結果為6,所以這兩個表示式均為非答零,所以它們進行邏輯與操作之後的結果為1
對於a || b+c&& b == c,||邏輯或操作符連線兩個表示式,但是第一個表示式為a,非0,故不用求後一個表示式的值,所以該表示式結果為1
在vs2010上執行通過
測試**如下:
int a=3,b=4,c=5 ;
int d = !(a+b)+c-1&&b+c/2;
int e = a || b+c&& b == c;
cout << d << endl ;
cout<< e;
若有定義:int a=5,b=2; 則表示式b= (a!=5)的值為?
24樓:眾裡尋他
a=5 b=2
!a --> 非a 為0
a!=5 為0
a!沒有這個操作
!=是一起的
25樓:程式猿3號
1最後的結果相當於
b=x是一個賦值操作,表示式肯定為真,所以是1
26樓:匿名使用者
a!=5為假,當然是b=0
27樓:匿名使用者
邏輯值 0
假定int a 0,b 1,表示式a
節俊智雲旋 最後值為7,這是一個if語句,就是 inta 5,b 6 if a b a else b ar的規則是先運算,所以括號中左值 a 6,a 6 的優先順序低過 所以先計算b b 的規則是先賦值,所以括號中右值b 6,b 5 左值6 右值6,即條件為真,執行 a,因為a值已是6,所以加1操作...
若有定義int a 10,則表示式a a a a的值是多少啊
a a a a的值為0 解析 左結合 先做a a,因為a 10,a 可寫為a a a 100 此時a的值為100 a a 可寫為a a a 0,此時a 的值為0a a可寫為a a a 0 綜上 a a a a的值為0 include int main 顯示的答案是 0 連續賦值 的規則 是從右到左 ...
已知定義int a 2,則表示式a a a a a的值是
這個表示式無意義,編譯器會給出警告資訊。該表示式的值與編譯器相關 非要執行,看一下這句在gcc給出的反彙編 0x401476 mov eax,0x1 0x40147b sub eax,dword ptr esp 0xc 0x40147f mov edx,dword ptr esp 0xc 0x401...