1樓:網友
我幫你測試過了,分別用vc++和devc++,結果都是一樣的,下面是我的測試程式。
#include
using namespace std;
int main()
int a=2,b=3;
cout<<(a>b?system("pause");
結果為:#include
using namespace std;
int main()
int a=4,b=3;
cout<<(a>b?system("pause");結果為:22是int型,是double型,根據型別轉換原則,整個式子的結果是double型,它佔8個位元組(與機子有關)。
這說明表示式的最終型別是表示式2和3中較高的型別。
c語言書中的一些問題,知道的朋友告訴下
2樓:木子小三
1. 不是八進位不能帶符號,而是「o%"被定義為不認符號。這是c的人為的規定。
2. 負數都是以補碼形式存放的。不同型別變數的位數不同,像short/int/long/double,位數是不同的。可能是2位元組、4位元組、8位元組。 具體見第三問。
3. int a=-1, 認為int是兩位元組,a的二進位形式就是11111111 11111111,換成八進位就是1777777,認為int是4位元組,a的二進位就是11111111 11111111 11111111 11111111,換成八進位就是37777777777。至於int究竟是多少位,不同系統不一樣,c語言裡沒有硬性規定。
4. 這個沒什麼好說的,十進位的15轉成八進位就是17。幾個進位的轉換方法你得會。八進位逢八進一,8相當於10,9就是11,15就是17.
從二進位好轉換些,15就是 1111對吧,從後面起3位一組,不夠補0,即001 就是1,111就是7。
c++語言學習問題,不用書的
3樓:網友
作為過來人,強烈建議不要用國內的書,要使用國外好書。使用過程中積累的書單主要分為基礎篇➊c++入門、➋語言技巧、➌底層、➍stl、➎boost、➏設計模式、➐演算法;應用篇➊windows、➋linux/unix 。這些書由基礎到難,你選擇看吧。
記住,一定要邊看,邊敲書上的**。
4樓:農民
先從基礎的下手,譚浩強的c++不錯,好書一定不要只看一遍,最少要3遍以上,c++學的較好了,可以在學一下mfc,這個東西很多,你可以參照孫鑫的visual c++視屏看看,他把mfc執行過程講的很細。其實我個人認為,c++語法會了,應該多花時間學學演算法和資料結構,演算法和資料結構才是程式的靈魂,這也是體現程式設計師水平的東西,那些語法多寫程式就能掌握。
關於c語言的基礎問題
5樓:網友
你好~你老師是教數學的麼~這個c語言他的除法符號叫做取整~也就是說小數全部是忽略的~且不會四捨五入~
和*都是優先順序都是同級的~按照從左到右計算~先算a/b再算*b,那麼只要a/b不是整除的,那答案就會出現問題的哦~
具體的可以帶一些數字進去~
7/5 = 1,再*b,怎麼算也都是b~~所以是不會等於a的哦~整除的情況就是4/2*2,那就是a哦~
6樓:網友
不是的。需要考慮a,b 型別;
a/b*b = ?;
假設都是int型別,計算結果需要取整。
3/2*2 = 2; (先計算3/2 = 1,取整這裡; 1*2 = 2)
8/4*4 = 8; (類似的演算法)
c語言 書上答案是這樣 我看不懂
7樓:網友
%f為浮點型,保留6位小數,即使是個整數,它也會在其後添上小數點和六個零。
float有效位是8位(包括小數點)。
故有效的是。八位以後是系統加上的並不準確。我用vc編譯後的結果是。
printf("c=%",c);是10位的資料寬度即是10位。3代表小數點後的位數。遵循四捨五入。由c= 得 。
e+05是的5次方)。+是正號。
8樓:網友
float型別有6位小數,所以這個數賦值給a後並不是精確的。
e+05是科學計數法的意思,e的5次方。
9樓:又又and喜喜
難道這就是計算機課內容嗎?我要學的就是這個?杯具啊。
10樓:網友
由於float的有效數字是6到7位 因此 7位以後的資料將是無意義的。
比如a= 對於float型別來說只有前7位有意義,後面幾位是無意義的。a+b是有意義的幾位相加 7位後出現無意義的隨即。所以37500是隨即出現的這是實型資料的舍入誤差。
11樓:秋葉
在計算c=a+b時,a= b=要被強制轉換成乙個精確到小數點後6位的數,而在轉換過程中小數點後的數字會出錯。
c=是科學計數法,e+05是10的5次方,在執行結果裡有「+」佔乙個字位。
12樓:網友
%意思是留3位小數,總計10位。
e的意思是科學計數法,e+05表示10的5次方,也有負次方的,所以用+(正號)%f為浮點型,保留6位小數,即使是個整數,它也會在其後添上小數點和六個零。
13樓:網友
因為a,b,c都是float型別,在計算機中a,b並不是精確等於賦的值,結果c會產生偏差。
表示乘以10的5次方。
14樓:抽伯
float數劇有效位是6-7位,所以前7位資料是精確的,7位後是不精確的。後面那個是10的正5次方。
15樓:網友
基礎數學還是要學好的。
科學計數法都不知道哈。
16樓:網友
三樓說的很好了,就不多加了。
c語言 課本上的例題 有些不懂 新人
17樓:趙明想
仔細看了下,c、d兩項a的方框的確是數字寫錯了,應該是5.
如果改正過來,你列舉的程式和題目是有區別的,這也是剛接觸c對於指標常見的誤區,首先你要理解指標的概念,舉個例子。
int *p;
p代表乙個變數,這個變數的內容實質就是乙個位址,在計算機中每個位元組記憶體都對應乙個位址,通過這個位址就可以知道記憶體的資料,(*p)意為p指向這塊記憶體的內容。
下面來分析兩個程式的不同點,在題目上的程式呼叫函式入口引數只起到了值的傳遞作用,並不能代表實參,所以形參的變數位址交換,實參是沒變的,它指向的記憶體資料也是不變的,即c是對的,而d錯了。 而在第二個程式中交換不是變數位址,而是位址指向的記憶體內容交換了,實參指向的那塊記憶體的內容當然也就不同了。
最後,插一句,指標的應用可以優化好多c語言程式,如果你想學好它,必須花時間理解它。
18樓:網友
有區別:
背景:以前學c時會有這樣的比喻:如a=10;變數是乙個盒子(就是a),它裡面存的才是我們的真實值(就是10),這個盒子的編號(位址)就是我們所說的指標(就是。
在這裡看不見,呵,應該是程式自動分配給這個變數的編號,如21321321321什麼的。)
1、圖上的函式改變的是指標,也就是位址,打個比方就是存放真實數值的盒子的編號。
2、你寫的加*後,改變的是指標實際指向的數值,打個比方就是用「存放真實數值的盒子的編號」去找到這個盒子,然後再對盒子裡存放的數值進行交換。
19樓:網友
swap(int *p1,int *p2)
是能達到交換a,b的;*p1用來訪問p1指向的資料,p2也是;
20樓:網友
這個題你可以轉換一下思路,以前你問的題是對變數的指標進行操作,但是在swap函式中實際操作的是指標所代表的空間的值,而這題目中,swap中是把倆指標變數進行交換,而不是指標變數所代表的值,所以函式的形參是無法返回的,
21樓:匿名使用者
圖中的只是改變位址,而你給的是改變位址裡面的值,前者是位址,後者是數值,當然不一樣啦!
c語言課本上,有幾句話不懂,求助大家
22樓:網友
引用乙個變數前面加上至少乙個*,就是間接引用,是通過變數儲存的位址進行二次引用,為間接定址。
直接引用變數名,就是直接引用,通過變數的位址一次引用。
1 int p = 0; printf("%d", *p); //編譯錯誤,p不是指標。
2 int *p = 0; printf("%d", *p); //執行期錯誤,段錯誤。
3 char * p = "a"; printf("%c", p);此處應為 *p
4 const int a = 0; int b = 1; int *p;
printf("%d", *p);//未初始化,可能會段錯誤,也可能不會。
p = &b;
p++;//無意中將p指向了a(程式原意是a是隻讀,不能修改)
p = 1;//修改了const a
C語言問題,C語言問題
符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...
C語言問題,c語言問題
這是值傳遞,值傳遞的過程的是,系統會給你的實參的值進行乙個拷貝,把這個拷貝傳遞給形式引數。因為是拷貝,所以實參裡頭的值是不會改變的。如果是位址傳遞就不一樣了。補充 你可以定義乙個指標,這個指標指向主函式的結構體。然後子函式的形參也定義乙個指向結構提的指標。這樣就是位址傳遞了。樓主還是好好花點時間看看...
c語言問題,乙個c語言問題?
gcc是乙個著名的編譯器,屬於gnu編譯器套件,可以編譯很多種語言,一般用於編譯c c 程式,是linux下常用的編譯工具 編譯器只能說是一種翻譯 的程式,我們所熟知的dev c vs等其實屬於ide 整合開發環境 ide一般指包括了編譯器,編輯器等多種功能的軟體,功能比編譯器更加強大 linux下...