1樓:匿名使用者
1、最重要的原因當然是c++提供了流物件『>>』和『<<』,它們代表了新觀念。
流物件能輸出物件,而printf函式和scanf函式不能。
2、printf本身有問題,它不是型別安全的。
舉個例子。下面的程式會輸出什麼呢?
#include
int main()
這個時候我們需要對a進行強制型別轉換,否則輸出結果就不是我們想要的3。
什麼原因呢?這涉及到float、double、int的位分布問題了。
3、首先讓我們觀察一下printf函式和scanf函式的宣告,它們分別是:
int printf( char *, ...);
int scanf( char *, ...);
我們看到,除了第乙個引數要求是char *以外,其餘引數的型別不限,個數也不限。
從這一點能夠看出,c語言對函式引數的資料型別是不做嚴格的檢查的,
但是c++語言卻是要做嚴格的型別檢查的,這與c++支援函式過載有關。
4、c++中其實也可以用printf,只不過可能會出一些問題,所以不提倡使用。
舉例,在乙個程式裡,如果cin、cout和scanf、printf混合使用,
系統不能保證他們的執行次序是正確的,
假如我們希望輸出『你好』,也許輸出的是『好你』。
2樓:匿名使用者
1、printf不能直接輸出乙個類;
2、printf本身有問題,它不是型別安全的;
舉個例子。下面的程式會輸出什麼呢?
[cpp] view plain copyint main(){
float a = 3.14;
printf("%d\n", a);
return 0;
會輸出3嗎?你可以試一試。這個時候我們需要對a進行強制型別轉換,否則輸出結果就不是我們想要的3。
什麼原因呢?這涉及到float、double、int的位分布問題了。這就體現了printf的不友好。
3、c++中其實也可以用printf,只不過可能會出一些問題,所以不提倡使用。
例如,同時使用cout和printf,可能會導致輸出順序出現偏差。
為什麼這個c語言程式在dev c++上執行時,去掉了scanf後面的printf,執行時就沒有輸入輸出,直接結束。
3樓:匿名使用者
有可能是因為輸入緩衝區沒有清空,所以沒有讓使用者輸入的動作。在scanf("%d",&a);之前做一次清空輸入緩衝區的動作應該就會正常了,即呼叫一次 fflush(stdin);
沒有輸出可能是因為沒有遇到換行符,部分編譯器是會這樣的,要遇到換行才去輸出,你可以在return 0;之前輸出一次換行,應該就可以了,即呼叫一次 printf("\n");
求c語言和c++大神解答,printf怎麼轉成cout輸出語句
4樓:匿名使用者
cout輸出不需要指定輸出的格式型別,其他的和printf一樣的,endl 表示換行,當然 \n也還是可以用的. cout << "\n"
cout << "trim : "<< s.trim() << endl;
cout << "[3] : " <
5樓:匿名使用者
printf("a=",a);
轉換成count<<"a=="<
c++裡面可以用printf語句嗎 6樓:匿名使用者 可以,在輸出格式和效率方面比c++佔優勢 7樓:匿名使用者 如果樓主要是學習c++就盡量別用printf, 用cout輸出這樣可以加深對c++輸出流的理解和應用。 但是一旦你使用熟練了。如果要去解決問題。 個人還是比較喜歡在c++中使用printf,因為printf在輸出大量的資料的時候,會體現出它的優勢。 就是printf()的輸出比cout快,特別你程式如果有大量的輸出的時候。 同理scanf()的輸入也比cin塊,特別程式中有大量的輸入的時候,所以語言就是乙個工具,熟悉了工具之後,就選擇自己喜歡的,既然c++相容c為什麼不用效率高的輸入輸出哪, 但是小規模資料,差別不大。 8樓:匿名使用者 這個問題問得好,說明你還沒入門!呵呵!不要氣餒,慢慢來! c語言裡用printf是作為函式來呼叫的,(你可以在譚浩強的書後面或者能查到庫函式的地方查檢視)! 而c++預設的輸出函式是乙個叫cout的物件,是呼叫cout這個物件的乙個類函式,所以預設情況下是肯定不行的! 當然,人是萬能的,沒有什麼不可能。你可以在c++裡新增乙個printf函式然後呼叫啊,絕對可以的!!! 9樓:匿名使用者 用是可以的,但一般不建議用,而更應該用cout,用它比用printf更方便. 10樓:匿名使用者 c++是相容c的啊,在c 中可用的東西,在c++裡都可用 11樓:愛 c或c++都可以用printf c語言,visual c++ 怎麼讓輸出的值保持乙個位置不停地更新,而不是乙個佔一格的printf出來? 12樓: 看了許久才明白樓主的意思,在控制台的程式麼,你可以試著敲足足夠的換行,使得換一次就到達第二頁,看上去位置還在原來的地方。 也就是printf("\n");多寫幾個啦。希望對你有幫助/* note:your choice is c ide */#include "stdio.h" #include "windows.h" //填充螢幕 //row 行數 void fillscreen(int row); void main() }void fillscreen(int row){int i; for(i=0;i 寫了個demo,你看看是不是想要的 13樓:匿名使用者 移動游標啊! 每次輸出使游標退回來,然後下一次輸出覆蓋前一次的輸出就行了!上面的那種方法太*****, 悲催。 你直接呼叫乙個api吧游標移動一下,這種方法可以修改控制台輸出的內容! 或者還有一種方法: 你的程式顯示 60 % 肯定是在同一行,那麼每次輸出 **%的時候 在字串後面加上 \r , 然後下一次輸出的時候在把這行重新輸出一遍就可以了。 14樓:匿名使用者 利用退格鍵啊,printf("\b%d",i) 15樓:紅天綠花和藍草 採納的描述太麻煩,聽我的,標頭檔案加#include,用printf(" 「這裡是你要輸出的東西」 \r"); 精髓:printf內活用\r 解決不了你的問題我吃屎 p p 首先,它是乙個 陣列,陣列裡面儲存的是指標 p 則不同,首先它是版乙個指標,然後權,它指向乙個陣列,但通常,再定義的時候需要指定所指向陣列的大小。示例 include int main int argc,char argv char指標陣列,兩個元素,分別指向hello和worldprint... 你的題目不知道是什麼意思,只是改正了語法錯誤,現在能執行了,不知是否可以?include 此行有改動 intmain printf s lf th lf s,h return0 你還把printf達成了print 我第一次見先列印再計算還問為什麼,你沒學c吧,為了考2級?因為你把這兩句的順序寫反了,... 對於bai這個程式,strcat函式把s2綴合到s1上。du此時s1比s2的有效zhi 字元長度要長,接下來dao的步驟是讓專s2的字元對應與截止到屬s1的空字元之前的所有對應位置的字元同步 不包括s1的空字元 而由於s1比s2長,所以導致s2被同步後,並不正確地以空字元結束,如果不對s2做結尾處理...c語言中p是什麼意思,C語言中 p 是什麼意思
為什麼C語言輸出為,為什麼C語言輸出為
為什麼這道c語言題要加s2,為什麼這道c語言題要加 s2 i 0 ???