1樓:風中炙炎
因為定義a為無符號型整數,其65535的二進位制表示為1111111111111111,即16個一。而在函式printf中使用%d,即表示以整數的型別輸出,整數型別預設是有符號的,所以將16個位分為一個符號位,和十五個資料位。又因為編碼系統預設符號位為1表示負數,而在計算機編碼中,負數使用補碼錶示,所以1111111111111111被認為是某一負數的補碼,又根據補碼的計算方法計算原始碼(負數符號位不變,資料位取反加1)為1000000000000001,為—1,所以得出如此結果。
如果使用%u,則表示以無符號整數型別輸出,則會輸出65535.
2樓:**紳士
朋友你好,這個題是這樣的,因為unsigned int a的取值範圍為1,2,3······65535,若你程式是那樣的,則執行的結果為65535,而不是-1,若你的程式為:
unsigned int a=65536;
printf("a=%d\n",a);
則結果為:a=1
若你的程式為
unsigned int a=65537;
printf("a=%d\n",a);
則結果為:a=2
不知你體會到沒有,也就是一個圈的意思,若數大於範圍,則它就從最後的那個數向後再推。這個重在意會。希望能幫到你。
3樓:匿名使用者
在輸出的時候unsigned int的65535被轉化為int型,printf("a=%u\n",a);就不會發生這種轉換。
4樓:穎喵喵是討厭鬼
65535 = 0xffff = 11111111 11111111 11111111 11111111 (b)
而-1也是11111111 11111111 11111111 11111111 (b)
所以就輸出-1了。
這關於補碼問題。
5樓:慕冬亮
補碼的事情,你列印用的不是無符號列印,建議用一樓的。
6樓:匿名使用者
試試printf("a=%u\n",a);
一道我不能理解的c語言題,希望大家幫我解答,謝謝
7樓:匿名使用者
選c因為呼叫fun函式相當於是把q這個指標的值傳遞出去,在fun函式中有另一個s指標來接收這個值,但s接收完之後,直接就又被賦了一個新的地址((int*)malloc(sizeof(int))此句又重新申請了一個空間,並把該空間的地址值賦給了s);此時其實,fun裡面的操作與原q已沒什麼關係了,q除了在一開始把自己的值拷貝了一份傳出去後就沒再變過,如此,在最後輸出時,它儲存的還是a的地址,所以是1
8樓:匿名使用者
c 1
首先說函式void fun(int*pl,int*p2,int*s)我們知道,函式傳引數有兩種方式,傳值和傳址。可能理解上比較難,我們說的簡單點,
以一個交換函式為例int swap(int a, int b),不論a, b什麼值,在呼叫以後,都沒法交換,如果想達到交換a,b的目的,就要使用int swap(int * a, int * b),或者int swap(int &a, int &b)(如果想詳細瞭解,隨便搜搜傳值傳址就ok。)。
那麼,想要改變一個指標的值呢(指標的值其實就是它指向的地址)?有了上面的參考,是不是需要用一個指向指標的指標呢?叫做2級指標。
9樓:匿名使用者
c q最初指向變數a的地址,因此*q=1.
之後q作為引數呼叫func,會生成一個q 的副本賦值給s,s的改變不會影響到q值
10樓:匿名使用者
cq指標的值沒變;所以q還是a的地址。
我寫了一道c語言程式設計題,但是出現了我不能理解的bug希望有大佬幫我 看看!!感激!!!
11樓:聽不清啊
要求分別統計出其中英文大寫字母,小寫字母,數字,空格以及其他字元的個數。
是要每一行的統計資料嗎?
12樓:匿名使用者
這一句:
if( str[j][j]>='a' && str[i][j]<='z' )
什麼意思?【str[j][j]】
還有那個
for( i==0; 1<3 ; i++ )額。。。
13樓:匿名使用者
if那裡 你寫了str[j][j] 注意一下
有一道c語言的選擇題,希望能幫忙給出詳細解答,謝謝了
14樓:匿名使用者
struct s
;static struct s a[3]=;
static struct s *ptr;
ptr=&a[1];
第5句相當於
static struct s a[3]=,,};
然後看答案
a.ptr->i++
ptr指向a[1]然後指向屬性i 此時i=2執行完這句時候才執行i++
b.ptr++->i
結構體中沒有i這個屬性
c.*ptr->i
->的優先權大於*指標 所以相當於*(ptr->i)而i屬性是int 不能用*指標去修飾
d.++ptr->i
->的優先權大於++所以相當於++(ptr->i)而使用這句之前使用了i+=1
所以此時a[1]的i=3
所以正確答案是d
15樓:匿名使用者
da = 2
b = 2
c 估計語法應該過不到
16樓:匿名使用者
d.++ptr->i
一道c語言題,我有好多不明白的地方,希望大牛們能指導一下
17樓:
先給你一份自己剛寫的**:
#include
#include
long long ans[10005];
#define mod 1000000007int main()
int t;
scanf("%d", &t);
while (t--)
return 0;
}然後回答你的問題:
1,為什麼不能直接取模
可以直接取,取模是符合交換律的,只要保證取模中途不要溢位就行寫三次取模**很冗餘,不好讀
2,為什麼程式很慢...
因為沒必要每次輸入都重新算一次
可以直接全部算出來所有的答案,存在陣列裡,每次問的時候直接輸出答案就可以
(也就是把你的第二份**裡面的 dabiao 函式放到迴圈外面3,這個題裡面的n好像完全沒用
4,這個問題有更快的解法...超級快...
叫做矩陣快速冪...感興趣可以自己去查資料
18樓:匿名使用者
宿業師山房待丁大不至(孟浩然)
19樓:
初發揚子寄元大校書(韋應物)
一道c語言題目,很難,對我很重要,但是我沒有思路,希望大家幫幫我
20樓:匿名使用者
結構體,連結串列結構,成員包含各類成員資訊。要求裡面寫的夠清楚了
21樓:_qq加
樓主問題解決了嗎 如果沒有,我試試那
你說的這個通訊錄說難也難 說不難也不難
不難是因為都是基礎知識
難 是因為工作量大
22樓:下一頁使用者
多看書、多思考。程式設計的思維方式也是需要鍛鍊的
一道關於c語言的題目,希望有人告訴我我錯哪了,為什麼執行不對?
23樓:匿名使用者
main函式裡第一行 放到main函式前面,即:
int age(int n);
void main()
急急急!一道有關於c語言的程式設計題目,希望懂得可以告訴我。關於結構和呼叫引數這方面的知識。
24樓:
一樓的朋友回答的不錯。很認真。他講的很有道理。
25樓:去吧
看來我的水平也低了點了。學了半年了。題目都看得不太懂
關於c語言的一道題
你的程式應該修改成這樣才能執行 int x 5,y 5 for x y 你寫的是for x y,改正 for x y 逗號改成分號,for語句裡邊的倆分號分別將 初始值 迴圈是否繼續的條件 更改初始值 隔開,你的程式的意思是 初始時候x和y都是5,然後進入for迴圈,因為第一個分號前是空的,所以就直...
一道C語言程式設計題,一道C語言程式設計題
源 只要150行的程式就能用於 抗震救災 一道c語言程式設計題 15 在vc6下除錯通過。include stdio.h main printf 共有 版 d組解 權 n count 一道c語言程式設計題。5 include int s 100 100 定義陣列,第i行存的是第i個學生的成績 int...
一道c語言函式題,一道C語言函式題
原因 i是全域性變數 一步一步來分析這個程式 從main進入 for i 5 i 8 i aa 進入迴圈首先i 5,i 8成立 執行aa 此時i 5 執行下面的迴圈 for i 5 i 8 i printf printf n 列印3個星號一個回車符 然後i的值由於aa中的迴圈變成了8 好了,aa執行...