1樓:趙德柱
c語言資料型別轉換分自動轉換和強制轉換兩類。
自動轉換
自動轉換髮生在不同資料型別的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則:
1.若參與運算量的型別不同,則先轉換成同一型別,然後進行運算。
2.轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。
3.所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表示式,也要先轉換成double型,再作運算。
4.char型和short型參與運算時,必須先轉換成int型。
5.在賦值運算中,賦值號兩邊量的資料型別不同時, 賦值號右邊量的型別將轉換為左邊量的型別。 如果右邊量的資料型別長度左邊長時,將丟失一部分資料,這樣會降低精度, 丟失的部分按四捨五入向前舍入。
強制型別轉換
強制型別轉換是通過型別轉換運算來實現的。其一般形式為: (型別說明符) (表示式) 其功能是把表示式的運算結果強制轉換成型別說明符所表示的型別。
例如: (float) a 把a轉換為實型(int)(x+y) 把x+y的結果轉換為整型在使用。
強制轉換時應注意以下問題:
1.型別說明符和表示式都必須加括號(單個變數可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與y相加了。
2.無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的資料長度進行的臨時性轉換,而不改變資料說明時對該變數定義的型別。
希望能夠幫助到你,望採納!
2樓:匿名使用者
解釋很清楚,**看不明白?
c語言程式 8轉10 我看不懂,幫忙解釋下謝謝
3樓:c學者
這個程式是不是有錯誤啊。。
main()
printf("%d",n);
}不知道演算法對錯,但是程式一定些錯了
4樓:匿名使用者
main()
printf("%d",n);
}暈,樓下這位不知執行過沒有就說有錯
5樓:匿名使用者
你再看看程式啊有問題啊
c語言看不懂**,求一步步解釋,謝謝
6樓:
答案正確啊。*(a+1)就是a[1],*(ptr-1)就是ptr[-1](用負數表示下標是非法的,這裡只表示從ptr所指的地方向左移一個元素的位置)。那麼——
void main( void )
;//使a[0]==1,a[1]==2 ,a[2]==3 ,a[3]==4 ,a[4]==5
int *ptr=(int *)(&a+1);//宣告指標ptr並用(int *)(&a+1)初始化到指向陣列a的元素5的後面一個元素,由於&a是(*)[5]型,所以要用(int *)強制為int *以便與prt型別匹配
printf("%d,%d",a[1],*(ptr-1)); //return;}
c語言題目。這道題看不懂。。求大神詳細解釋下,謝謝
7樓:匿名使用者
答案選b。
定義結構體陣列c
未執行f(c)時,c[0]為 qian,f,95,92 c[1]為 sun,m,98,99
執行f(c)時,將c作引數傳遞
執行f(c)後將c[1]的值改變為 zhao,m,85,90f()函式作用就是對c[1]重新賦值
請教這個c語言程式,最後的遞迴法我沒看懂,求大神幫忙解釋下,謝謝!
8樓:匿名使用者
n = 1或2明白吧
f=count(n-1)+count(n-2):第n階時,因為一次只能上1或2階所以只可能從n-1或n-2階上來,上來的方法也就是這兩種方法的和了啊啊啊
9樓:ben笨_小劍
這是一種類似斐波那契數列的思想。
我有n個臺階,就是f(n)個走法
那我先走n-1個臺階,再走一步,就是f(n-1);
那我先走n-2個臺階,再走2步,就是f(n-2);
10樓:西瓜蘋果胡桃
這咋解釋呢。。。。首先得從數學或邏輯角度理解,然後轉換成**。
數學或邏輯角度上來看,n層的樓梯的爬法=n-1層的樓梯的爬法+n-2層的樓梯的爬法,這個能理解嗎?
一道c語言程式填充題,問題如下,我看不懂為什麼這麼填,請詳細解釋一下,謝謝!
11樓:寂靜深闌斜
說下這段**思路。a、b兩個陣列,總有一個陣列元素最先被使用完,那麼之後存入c陣列的元素只能是另一個陣列的。i和j作為角標,就是用來表明a、b陣列各用了多少元素。
如果a、b陣列都沒用完,那麼就要判斷a、b誰出的元素小,小的存入c中(根據要求知c中元素由小到大排列)。
c語言,關於位運算子的,這個怎麼分析啊,有點看不懂,求高手解答啊!謝謝!!
12樓:匿名使用者
這裡都是按位與運算和右移運算子,一個個看, 知道是這樣計算就行了,具體計算是計算機的事情
13樓:4向日葵
程式出自何處?以我看: 沒有功能,就是老師讓學生練習移位操作的,要是微控制器的程式的話可能就有別用的了
14樓:5千零一
把位運算子看懂,就差不多會了。
15樓:匿名使用者
這個程式裡有兩種位運算子:按位與(&)、按位右移(>>)。
先看優先順序,這個程式裡「()」的優先順序最高,「>>」次高,「&」優先順序第3;
位運算子都是按二進位制運算的,所以要先將所有參與位運算的數字轉換為二進位制。
&:只有對應的兩個二進位制位均為1時,結果才為1,否則為0,例如:
010010
& 000110
____________
000010
>>:將運算元右移n位相當於該數除以2的n次方,例如:60>>2=15。
至於實現什麼功能,你自己算出結果來分析吧
C語言中賦值時不同資料型別的轉換
你說的int應該是16位,2位元組。char型別只佔用了一個位元組,8位。所以轉化的時候只要取int型16位的低8位就夠了。這個和變數的記憶體儲存方式有關係,你要弄懂變數怎麼在記憶體中放置和儲存的就很容易理解了。 是int 轉為char 才取 int 的低8位 int 有 32位 轉成char型別時...
c語言成績轉換的一道題,C語言成績轉換的一道題
這是我修改後的 include int main else if 80 t t 89 else if 70 t t 79 else if 60 t t 69 else if 0 t t 59 else if t 0 t 100 return 0 正青春夢飛揚 關鍵是如何讀取檔案中的資料,每次讀取一行...
兩道簡單的c語言程式設計題目!如圖 求詳細解答
第二道看不清楚 這是第一道 int a cin a for int i i cout 1234567890 1.include using namespace std void fun1 int m void fun2 int main int number cin number int value...