當前位置:首頁 » 編程語言 » c語言的函數類型轉換

c語言的函數類型轉換

發布時間: 2022-09-03 19:27:09

『壹』 c語言數據類型如何轉換

C語言算術表達式的計算,在計算過程中,每一步計算所得結果的數據類型由參與運算的運算對象決定,相同數據類型的兩個對象運算,結果數據類型不變,不同數據類型的運算對象進行運算,結果的數據類型由高精度的運算對象決定。精度的高低:double>float>int
需要注意的是,數據類型的轉換是在計算過程中逐步進行的,整個表達式結果的數據類型一定與表達式中出現的精度最高的數據相同,但是具體得到數據值是逐步得到的,例如:int
x=1,y=3;
double
k=1573.267;
x
/
y
*
k
這個表達式計算結果的數據類型是double,
計算結果的答案是
0.0
因為在第一步
x/y
的計算中
結果是一個整型數據
0
第二步計算
0
*
1573.267
結果是一個double類型的數據,但數值是0.0
也就是說,算術表達式計算結果的數據類型與運算的優先順序沒有關系,一定具有表達式中精度最高的數據類型,但是具體得到數據結果數值,與優先順序可就有關系啦。

『貳』 c語言類型轉換分為那兩種

c語言函數從形式上分為這么兩種:一種是用戶自定義函數,就是你自己根據功能的需要自己編寫的函數;另一種是系統自帶的函數,如sqrt(x)函數
(就是求x的二次方根),這樣的可以直接用,不用自己編寫,前提是你得在頭文件中把它們包含進去;

『叄』 C語言中數據類型轉換的方式有幾種

C語言中數據類型轉換的方式有兩種:自動類型轉換,由C編譯系統自動完成。還有一種是「強制類型轉換」由程序員在代碼中明文寫清楚。

『肆』 c語言強制類型轉換

1、int a;int b;double c = (double) a;double c = (double) b;int a = (int) c;這就是一種強制轉變方法。

『伍』 關於c語言中的類型轉換,謝謝了啊!!!

main() /*No.1主函數*/
{
printf("Welcome to study C program.\n");
printf("This is Lesson One.\n");
}
程序寫好後,按「F9」,然後按"Alt-F-O",就進入DOS提示符下
去執行它。

Welcome to study C program.
This is Lesson One.

怎麼樣?你自己的程序也變成了*.exe型的可執行文件了。按
「EXIT」可以返回到系統。
上例中「main()」是程序的主函數。C 語言程序由一系列函數組
成,而且每個程序必須有且只有一個主函數,即「main()」。在第一
行末還有/* */所夾的內容,它在程序編譯時不參與編譯,只說明程
序的作用,即起注釋作用。所以在你抄本教程的例子時可不抄這一部
分內容。
每個函數必須由「{ }」括起來,每句程序必須用「;」結束。
第3行第4行中printf是C語言用來在屏幕上輸出信息的一個重要
函數,最簡單的格式是
printf("顯示的內容");
字元串後面的「\n」不會顯示在屏幕上,它的意思是「回車換行」
接下來,你把第3行後面的「\n」去掉,再按「F9」後去執行,
你就會發現兩行內容都印在了一行。

Welcome to study C program.This is Lesson One.

如果在「\n」後加上「\a」,即每顯示一行出現一次響鈴。
如下表,是「\」後面字元的特殊含義。
\r
回車不換行(到行首)

\t
橫向跳到下一輸出位

\b
向左退格

\\
輸出字元"\"

好。下面把程序中「printf("This is Lesson One.\n");」
換成「printf("\tThis is Lesson One.\n");」,執行一下程序。

Welcome to study C program.
This is Lesson One.

下面再換成「printf("This is \b\bLesson One.\n");」再執行
一下。

Welcome to study C program.
This iLesson One.

程序中的「s 」並不是沒有顯示,而是顯示後,又被「Le」給蓋
上了。
要想在屏幕上輸出一個「C:\>」則要寫上「printf("C:\\>");」
好了,第一節就要此為止。你趕快復習一個。你知道今天所學的
知識了嗎?(只要學會了這些就別再多學了,貪多吃不爛。)
1.printf("顯示信息") 最簡單的輸出格式
2.「{ }」 用來括起函數
「;」 每句程序的結束標志
3.「\t」「\n」「\b」「\a」是什麼意思?
4.主程序的標志是什麼?
5./* */ 是用來注釋程序
不過先別關機,如果你用的是UCDOS或是成然漢字,你可以把顯
示的信息用中文代替。如:printf("我一定要把C語言學會!\n");

您的當前位置是:首頁>>電腦知識>>文本方式下的顯示

--------------------------------------------------------------------------------

文本方式下的顯示

C語言中,圖形函數大致可分為兩類:字元模式函數和圖形模式函數。本節我們練習使用字元模式函數。
使用字元模式函數應該在程序中聯入conio.h頭部文件。
下面是一些函數的作用
1) void clreol(); 從游標處刪除到本行末
2) void delline(); 清除本行內容,下面內容上提一行
delline();函數實際上還起到了向上卷屏的作用。
3) void insline(); 在游標所在行插入一空行,原來該行及以
下各行皆向下移一行
4) int wherex(); 返回當前游標的x(行)坐標
5) int wherey(); 返回當前游標的y(列)坐標
6) void highvideo(); 字元輸出用高亮度字元
7) void lowvideo(); 字元輸出用低亮度字元
8) void normvideo(); 字元輸出用普通亮度字元
在以上的各函數中皆不帶參數,當然也可以寫成括弧中有void的形式:
void wherex(void); 還可以寫成 wherex();
清屏、清行、向後刪行、插行的操作真有些CCED、WPS等編輯軟體的風格,就是在你平時的屏幕設計中也用少不了。返回坐標的函數則給你的設計提供每一個環節的游標坐標值。有利於你前後響應。字
符亮度的改變則會讓你的字元顯示出層次感,怎麼樣,趕快試試吧:
/* No32.c*/
# include "stdio.h"
# include "conio.h"
main()
{ clrscr();
gotoxy(10,1);
cprintf("甜密密,");
highvideo(); /*高亮度顯示*/
cprintf("\r\n 你笑得甜密密,");
lowvideo(); /*低亮度顯示*/
cprintf("\r\n 好象花兒開在春風里,");
normvideo(); /*普通亮度顯示*/
gotoxy(10,4); cprintf("開在春風里");
cprintf("\r\n 在哪裡,在哪裡見過你?");
printf("\r\n 你的笑容這樣熟悉。");
gotoxy(10,20);printf("任意鍵刪去游標後的內容");
gotoxy(18,3); getch();
gotoxy(18,3);
clreol(); /*刪去游標後字元*/
gotoxy(10,20);printf("任意鍵刪去本行的內容 ");
gotoxy(18,3); getch();
delline(); /*刪去本行*/
gotoxy(10,20);printf("任意鍵在本行插一空行 ");
gotoxy(18,3); getch();
insline(); /*插入一空行*/
gotoxy(1,7);
}
應該注意的是,要發揮本節所講的函數的作用,在顯示時不能使printf函數,應使用cprintf函數。它的使用方法和printf的完全一樣,只不過後面的cprintf能發揮亮度設置和顏色設置的作用。前者
printf函數只有一種顏色和單一的亮度。
在cprintf函數中,「\n」的作用不再是既回到行首又換行,它只起一個換行的作用,所以要把內容在行首顯示必須再加一個「\r」
上面的程序不是一真正對大家有用的程序,只是用來說明一個剛剛學到的幾個函數的作用。在conio.h中還有一些字元型函數,它們都是帶參數的。
9) void textcolor(顏色); 定義顯示字元顏色
10) void textbackground(顏色); 定義背景顏色
下面是顏色數字和顏色對照表
BLACK 0 黑 DARKGRAY 8 深灰
BLUE 1 蘭 LIGHTBLUE 9 淡蘭
GREEN 2 綠 LIGHTGREEN 10 淡綠
CYAN 3 青 LIGHTCYAN 11 淡青
RED 4 紅 LIGHTRED 12 淡紅
MAGENTA 5 洋紅 LIGHTMAGENTA 13 淡洋紅
BROWN 6 棕 YELLOW 14 黃
LIGHTGRAY 7 淡灰 WHILT 15 白
背景顏色值只能是0-7共8個數字或其對應的英文大寫單詞。而前景(即字元)的顏色可以是0-15共16種顏色或其對應的英文大寫單詞。當你定義的前景和背景相同時,屏幕上看不到輸出的內容。
textcolor(4); 和 textcolor(RED); 效果是相同的。
設置屏幕顏色還可以使用
11) void textattr(前景顏色+(背景顏色));
但這里的背景顏色要有「<<4」。如白底紅字,就是:
textattr(RED+(WHITE<<4));
12) int gettext(左上角x,左上角y,右下角x,右下角y,內存指針);
把定義的長方形區域內的內容存在內存中
13) int puttext(左上角x,左上角y,右下角x,右下角y,內存指針);
把內存中存好的內容顯示在新定義的矩形塊內
這里的內存指針也可用字元形數組來代替。需要注意的是內存大小應該是所存內容的「行數*列數*2」。比如把第3行第5列到第6行第75列的數據存到內存中,可以用下面的片段:
char buffer[4*70*2];
gettext(5,3,75,6,buffer);
然後你就可以用puttext函數來顯示它了。
14) void movetext(左上角x,左上角y,右下角x,右下角y,
新左上角x,新左上角y);
把矩形塊移到新左上角(x,y)決定的地方
15) void window(左上角x,左上角y,右下角x,右下角y);
定義一個窗口,大小就是上面參數決定的長方形
利用這一函數,你可以在屏幕上任何一個地方開辟一個窗口,並在上面顯示需要的內容。這絲毫不影響屏幕其它地方的內容。當你定義了窗口後,你只能操作該窗口,gotoxy(),wherex(),wherey(),
clrscr()等等函數所表示的都是你定義窗口中的情況。實際上這就為我們的操作帶來了方便,你想操作哪兒,就定義哪兒,想回到平時狀態的屏幕,就定義一個最大的窗口,window(1,1,80,25);就復原了。
No.33號例子是利用puttext和gettext函數以及顏色定義來模仿CCED和WPS的菜單顯示。但這個小程序沒有可移動的光條,也沒有菜單中內容的相應執行程序,只是演示一下屏幕的保存和釋放而已。
/* No33.c */
#include "conio.h"
#include "stdio.h"
main()
{ int i=1,j,ch;
char buffer[6*50*2]; /*開辟內存空間的大小*/
clrscr();
textcolor(0); /*定義字元顏色*/
textbackground(7); /*定義背景顏色*/
gotoxy(1,1);
cprintf(" 功能1 功能2 功能3 ");
textbackground(0);
textcolor(14);
gotoxy(1,2);
cprintf("What's your name? 你叫什麼名字");
cprintf("\n\rMy name is Wang Dong. 我叫王東.");
cprintf("\n\rHow old are are you? 你多大了 . ");
cprintf("\n\rI'm thirty-four. 我四十四了");
cprintf("\n\r\n\rThis is Lesson One. 這是第一課");
while(1)
{ j=i;
textcolor(0);
textbackground(7);
if(i==1)
{ gettext(1,2,13,5,buffer);
gotoxy(2,2); cprintf("│第一課│");
gotoxy(2,3); cprintf("│第二課│");
gotoxy(2,4); cprintf("│第三課│");
gotoxy(2,5); cprintf("└———┘");
}
if(i==2)
{ gettext(13,2,25,5,buffer);
gotoxy(14,2); cprintf("│菜單一│");
gotoxy(14,3); cprintf("│菜單二│");
gotoxy(14,4); cprintf("│菜單三│");
gotoxy(14,5); cprintf("└———┘");
}
if(i==3)
{ gettext(25,2,37,5,buffer);
gotoxy(26,2); cprintf("│說明A │");
gotoxy(26,3); cprintf("│說明B │");
gotoxy(26,4); cprintf("│說明C │");
gotoxy(26,5); cprintf("└———┘");
}
textcolor(14);
gotoxy(10,20);printf("→向右移動 ←向左移動 Esc 退出");
ch=getch();
if((ch==75)&&(i==1)) /*菜單個數的判斷*/
{ i=3; ch=0;}
if((ch==77)&&(i==3)) /*ASCII碼 77是右箭頭*/
{ i=1; ch=0;}
if((ch==75)&&(i>1)) /*ASCII碼 75是左箭頭*/
i--;
if((ch==77)&&(i<3))
i++;
if(ch==27)
break;
puttext(j*12-11,2,j*12+1,5,buffer);
}
}

您的當前位置是:首頁>>電腦知識>>基本輸入輸出

--------------------------------------------------------------------------------

基本輸入輸出

基本輸入輸出函數
下面要進行的工作是編個程序,你輸入什麼,它就顯示什麼。程序如No.2所示。
main() /* No.2 */
{
char ch[12]; /*定義一個字元串*/
int i; /*定義一個整(數)型變數*/
printf("請輸入一個字元串:"); /*顯示提示信息*/
scanf("%s",ch); /*用輸入函數輸入字元串*/
printf("請輸入一個整數:");
scanf("%d",&i); /*輸入一個整數*/
printf("輸入的字元串是:%s 輸入的數字是%d",ch,i);
}
如果你輸入的字元串是「中華人民共和國」,數字是2000,那麼編譯成EXE文件後執行

請輸入一個字元串:中華人民共和國
請輸入一個整數:2000
輸入的字元串是:中華人民共和國 輸入的數字是2000

怎麼樣?比No.1程序要好一些吧,想顯示什麼就顯示什麼。你還
可以顯示代數式的結果:如把第8行最末尾的數據「i」換成「i*10」
printf("輸入的字元串是:%s 輸入的數字是%d",ch,i*10);
運行程序時,輸出如下:

請輸入一個字元串:中華人民共和國
請輸入一個整數:2000
輸入的字元串是:中華人民共和國 輸入的數字是20000

本程序注釋較多,這樣就增加了程序的可讀性。通過此程序我們應學習哪些知識呢?
第3行和第4行是對數據進行定義,任何一個變數在C 語言中必須先定義才能使用。
第5行和第7行的scanf()是輸入函數,用來輸入用戶信息。其格式是:
scanf("數據格式說明",數據列表);
之所以是「數據列表」,就是說這里的數據,既可以是一個,也可以是多個,既可以是相同格式的數據,也可以是不同格式的數據。
scanf("%s%d",ch,&i);
它說明的含義是讓用戶輸入一個字元串再輸入一個整數,中間用空格分開。
在格式說明中「%s」「%d」是什麼意思呢?「%s」說明輸入的是 字元串,「%d」說明輸入的是整數
注意:C語言中,整數叫「整型數據」。其它格式如下表所示 %d
十進制整數

%o
八進制整數

%x
十六進制整數

%f
小數或指數形式數據

%c
輸入單個字元

上表格式說明也同樣適用於printf()函數。如第8行就是一例。需要注意的是,在輸入數字或單個字元時,數據列表必須用取地址符號,即「&」,而在輸出時則不用。
下面再看一看No.3號程序
main() /*No.3*/
{ int a=5,b=10,c,d;
c=200;
d=a*(b+c);
printf("a*(b+c)=%d",d);
}
在這個小程序里,我們計算了一個小代數式的值,然後輸出了它的值。需要說明的是,第二行中,在定義變數時可以賦初值。也可以象第三行那樣,在定義後再賦初值。
在C語言中,除了整數外,還有無符號整數、實數(浮點數)、長整數、雙清度實數。
在C語言中,整數並不是可以無限大,它的大小是有一定限度的,超過了這個限制,程序就會出錯。大小規定如下表所示:

數據類型
存儲位(bit)
數值范圍

整型 int
16
-32768—32767

無符號整數unsigned
16
0—65535

實數 float
32
10E38—10E38

長整型 long int
32
-2147483648—2147483647

雙精度實數 double
64
10E-308—10E308

我們下面練習一個No.4號程序
main() /* No.4 */
{ int a=1000,b=2500,i1;
long c=1000,b=2500,i2;
i1=a*b;
i2=c*d;
printf("整型數據1000*2500的積是%d\n",i1);
printf("長整型數據1000*2500的積是%ld\n",i2);
}
執行程序,屏幕輸出:

整型數據1000*2500的積是9632
長整型數據1000*2500的積是2500000

上例中,因為整型數據超出了32767的限制,所以出錯。如果計
算結果超過32767,在設計時就應該定義成長整型數據。
今天學習的內容太多了,下面的內容你會多少?
1.輸入函數scanf()和輸出函數printf()的格式是怎樣的?
2.scanf()在輸入字元串時和輸入數字時有什麼區別?
3.輸入輸出時「%s %d %o %x %c %f」表示什麼意思?
4.你能大致了角數字數據類型和最大值最小值嗎?
頭關機以前,你能否再看一眼No.2、No.3、No.4三個程序

您的當前位置是:首頁>>電腦知識>>定位輸出

--------------------------------------------------------------------------------

定位輸出

在系統程序中,顯示內容是方便的,任何一個位置都可以顯示,
那麼,我們怎樣隨意顯示輸出內容呢?在C語言中,游標定位用:
gotoxy(列坐標,行坐標);
下面的No.5例子就是它的具體應用:
/* No5.c*/
#include "stdio.h" /*連入頭部文件stdio.h*/
main()
{
char ch; int i;
gotoxy(10,4); /*把游標定位在(10,4)坐標處*/
printf("輸入一個字元,它便以大寫的形式輸出 ");
ch=getchar(); /*用getchar()函數輸入一個字元*/
if ((ch>='a') && (ch<='z'))
ch=ch-32;
gotoxy(10,7);
printf("輸入一個整數,便把它大1和小1的數輸出 ");
scanf("%d",&i);
gotoxy(15,13); printf("你輸入的字元大寫為%c",ch);
gotoxy(15,14);
printf("你輸入的%d兩側的數分別為%d,%d",i,i-1,i+1);
}
第1行是在編譯時把stdio.h連入程序文件。具體作用見No.6解釋
在上程序的第4行中,兩類數據定義佔了一行,這是允許的。C語
言程序寫法是很隨便的,它可以一行一句,也可以一行寫多句,上例
的第13行也是這樣書寫的。不過一般情況下我們不這樣寫。為了程序
在檢查和閱讀時方便,我們一般一行寫一句,而且程序中一個層次的
內容和另一個層次的內容使用縮格排版格式。如上程序的main()函數
上例中的if()語句等。以後程序中層次越多,越應該形成這樣的好習
慣。
如果你輸入的字元是m,數字是11,則屏幕輸出如下:

輸入一個字元,它便以大寫的形式輸入 m
輸入一個整數,便把它大1和小1的數輸出 11

你輸入的字元大寫為M
你輸入的11兩側的數分別為10,12

在No.5程序中出現了一個新的函數,它是字元輸入函數,它的作用是只輸入一個字元。
除了它,還有兩個字元輸入函數,如右表

getchar()
字元顯示,回車鍵結束

getche()
字元顯示,不必按回車

getch()
字元不顯示,不必按回車

上述三個字元輸入函數使用時沒有參數,即()中沒有內容。
在C語言中,字元也有大小,它按ASCII表中的值排列大小。可以
進行字元間及字元與數字間的運算。如上例的「ch=ch-32;」。比較
字元大小時,可用字元直接比較,如上例的第7行那樣;也可以用數
值進行比較,上第7行可改為:
if ((ch>=97) && (ch<=122))
上一行是程序中的條件語句,它的簡單格式是
if(條件表達式)
{ 內容1;}
else
{ 內容2;}
如果條件表達式成立,執行內容1,不成立則執行內容2。else語
句可有可無。當執行內容只有一行時,可以省略內容兩側的「{ }」
上述程序的執行內容就沒有「{ }」
在上例的「if ((ch>='a') &&(ch<='z'))」中「&&」是邏輯運
算符,邏輯運算符如下表所示

&&
邏輯與

||
邏輯或

!
邏輯非

任何時候,學習都是為了應用。下面我們編寫一個電子表程序:
/* No6.c */
# include "stdio.h" /*連入頭部文件stdio.h*/
# include "dos.h" /*連入頭部文件dos.h*/
main()
{ struct time t; /*定義時間變數 t */
struct date d; /*定義日期變數 d */
clrscr(); /*清屏*/
getdate(&d); /*獲取當前日期*/
gotoxy(33,4);
printf("%d.%d.%d",d.da_year,d.da_mon,d.da_day);
while(!kbhit()) /*如果沒有按鍵,則執行下面內容*/
{ gotoxy(34,6);
gettime(&t); /*獲取當前時間*/
printf("%d:%d:%d",t.ti_hour,t.ti_min,t.ti_sec);
}
}
C語言程序特別靈活,它可以把別的程序或文件中的內容,連入
到你的程序中,在C語言中已經有許多我們用到的內容放在了頭部文
件中,本例中就是利用了"dos.h"頭部文件中的時間和日期的定義。
這種連入,既可以是C語言內部的頭部文件(*.h),也可以是你自已
寫的文件。你自己被連入的文件既可以是「*.h」文件,也可以是
「*.c」文件。文件連入寫法有兩種:
#include "dos.h" 用這種寫法 dos.h 文件放在當前目錄中
#include <dos.h> 用這種寫法 dos.h 文件放在TC\INCLUDE目
錄中。
第6行中「clrscr();」是清屏函數,它不帶參數,作用:清屏
第11行的「kbhit()」函數是用來檢測用戶是否按了鍵,但它不
能測試出你按的什麼鍵。要知道按的是什麼,必須和輸入函數配合使
用。
第11行有「while(!kbhit())」是個循環語句,它的意思是:只
要沒有按鍵,程序便執行{...}所括的內容。
本節內容提綱如下:
1.游標定位:gotoxy(列從標,行坐標);
2.getchar()、getcha()、getch()三個字元輸入函數輸入時情況
是不同的,一個是游標是否回顯,一個是是否用回車結束
3.if(...) 如果...便執行{...}中的內容
4. &&邏輯與,||邏輯或,!邏輯非
5.#include "..." 把...文件和主程序連在一起編譯
6.kbhit()測試按鍵是否按

您的當前位置是:首頁>>電腦知識>>使用文件

--------------------------------------------------------------------------------

使用文件

到此為止,我們仍停留在屏上,一些需要的東西還不能做為資料保存。要想把你看到的保留下來,就得把資料存儲在磁碟文件中,本節我們用兩個例子來學習使用文件。
No.7程序是模仿DOS命令中的程序。
/* No7.c */
#include "stdio.h" /*連入stdio.h*/
main(int argc,char *argv[]) /*帶參數的程序(帶命令行參數)*/
{
char ch;
FILE *in,*out; /*定義文件指針*/
if(argc!=3) /*如果命令行數目不等於3*/
{ printf("格式應該是: No7 源文件名 目標文件名\n");
exit(1); } /*退出程序*/
if((in=fopen(argv[1],"r"))==NULL) /*打開源文件*/
{ printf("文件不存在或磁碟沒准備好!\n");
exit(1); }
if((out=fopen(argv[2],"w"))==NULL)
{ printf("文件復制失敗!\n");
exit(1); }
while((ch=fgetc(in))!=EOF) /*如果讀出的數據不是結尾標志*/
fputc(ch,out); /*把讀出的數據寫到目標文件中*/
fclose(in); /*關閉文件*/
fclose(out);
printf(" 1 個文件復製成功 \n");
}
上述程序的主程序是帶參數的,argc表示命令行的元素個數,argv[],用來接收程序所帶的參數。這些參數的接收都是在執行程序時自動完成的。如用上常式序把名為「HEBEI」文件,復制到名為「BEIFEN」的文件,命令行應執行:
no7 hebei beifen
執行後,argc值為3,argv[1]成為「hebei」,argv[2]賦值為「beifen」。
上例中「exit(1);」表示退出程序的執行,返回到DOS提示符。
文件打開格式用
文件指針=fopen(文件名,"打開方式");
if((in=fopen(argv[1],"r"))==NULL) 意思是「如果文件打開失敗」,則... ...
打開方式中「r」是打開文件後,只能從文件中讀取信息。「w」是打開文件後,只能從文件中寫信息。下面是打開方式及功能列表

r
打開一個文本文件讀
rb
打開一個二進制文件讀

w
打開一個文本文件寫
wb
打開一個二進制文件寫

a
打開一個文本文件添加
ab
打開一個二進制文件添加

r+
打開一個文本文件讀寫
r+b
打開一個二進制文件讀寫

w+
生成一個文本文件讀寫
w+b
生成一個二進制文件讀寫

a+
打開或生成文本文件讀寫
a+b
打開或生成二進制文件讀寫

「fclose(文件指針);」用來關閉已打開的文件。 如上面的
fclose(in); fclose(out); 就是應用。
fgetc(文件指針); 從文件中讀取一個字元。
fputc(字元,文件指針); 把字元寫到文件中去。
EOF是文件結束標志。
下面我們編個簡易的文本文件閱讀器,它相當於DOS中的「type 文件名 | more」,也就是分頁顯示文本文件。
/*No8.c*/
#include "stdio.h"
main(int argc,char *argv[])
{
FILE *fp;
int i=1;
char ch;
if(argc<2) /*如果命令行參數少於兩個*/
{ printf("正確使用方法是: no8 文本文件名");
exit(1);} /*退出*/
if((fp=fopen(argv[1],"r"))==NULL) /*如果文件打開失敗*/
{ printf("%s 不存在",argv[1]);
exit(1);}
else
{ clrscr(); /*清屏*/
while((ch=fgetc(fp))!=EOF) /*讀取文件中的字元*/
{ printf("%c",ch); /*顯示讀出的字元*/
if(ch=='\n') /*如果讀出的字元是回車*/
i++;
if(i>=23) /*如果行數到24行*/
{ printf("Any key to continue......\n");
i=1;
getch(); /*輸入任一個字元*/
}
}
}
fclose(fp);
}
本例中沒有什麼更難理解的。需要提醒大家的是:在程序中你打開一個文件後,別忘了在結束程序之前,一定要把打開的文件關閉。
在上述程序中,使用了條件語句中的else語句。在使用else語句時,如果語句不

『陸』 C語言 函數調用 類型轉換

char s[]="I am a teacher!"; s是數組名,是首地址, 而s[0]是第一個元素值,是個字元!

『柒』 C語言中,數據類型的隱式轉換與顯式轉換分別是個什麼意思

顯式轉換,就是強制轉換。在被轉換的表達式前加(類型),比如:(float)5,就是把5顯式轉換成float類型。

隱式轉換,就是不需要加強制轉換,系統會自動做這個操作,比如:

double k;

k=10;

10是int型,不需要顯式轉換,系統自動會把它轉為10.0。

(7)c語言的函數類型轉換擴展閱讀:

隱式自動類型轉換:

C++語言編譯系統提供的內部數據類型的隱式自動轉換規則如下:

1、執行算術運算時,低類型(短位元組)可以轉換為高類型(長位元組);例如: int型轉換成double型,char型轉換成int型等等;

2、賦值表達式中,等號右邊表達式的值的類型自動隱式地轉換為左邊變數的類型,並賦值給它;

3、函數調用時,將實參的值傳遞給形參,系統首先會自動隱式地把實參的值的類型轉換為形參的類型,然後再賦值給形參;

4、函數有返回值時,系統首先會自動隱式地將返回表達式的值的類型轉換為函數的返回類型,然後再賦值給調用函數返回。

『捌』 c語言 所有類型轉換函數

在賦值表達式中,當左右兩邊數據類型不同時,右邊的數據類型應變為左值(變數)的數據類型,同時編譯器也能自動進行類型轉換,將低位元組數據類型轉換為高位元組類型,例如:int轉換為long
int,當不同的數據類型相互賦值時還有精度缺失問題,例如:將int賦給char,只是將低八位(一個位元組)賦給它,希望可以幫到你!

『玖』 C語言強制類型轉換

強制類型轉換是把變數從一種類型轉換為另一種數據類型。

例如,如果想存儲一個long類型的值到一個簡單的整型中,需要把long類型強制轉換為int類型。可以使用強制類型轉換運算符來把值顯式地從一種類型轉換為另一種類型。

發生在同一個編譯系統中,比如說把int轉化為longint,在VC++6.0裡面,longint和int都是4個位元組,不會有問題的,但是如果把int類型轉化為short類型那就裝不下了,簡而言之就是長類型不能轉化為短類型。

int類型如果要轉化為float、double、longdouble類型的時候只是末尾多了幾個0,但是反之轉化,就會出現數據的損失,小數部位都被省略掉了。

賦值中的類型轉換

當賦值運算符兩邊的運算對象類型不同時,將要發生類型轉換, 轉換的規則是:把賦值運算符右側表達式的類型轉換為左側變數的類型。

由於C語言中的浮點值總是用雙精度表示的,所以float 型數據只是在尾部加0延長為double型數據參加運算,然後直接賦值。double型數據轉換為float型時,通過截尾數來實現,截斷前要進行四捨五入操作。

以上內容參考:網路-C語言類型強制轉換

『拾』 C語言數據類型的轉換!!規則是什麼!

不是有強制類型轉換嗎?

強制類型轉換 強制類型轉換
當操作數的類型不同,而且不屬於基本數據類型時,經常需要強制類型轉換,將操作數轉化為所需要的類型。強制類型轉換具有兩種形式,稱為顯式強制轉換和隱式強制類型轉換。
1、顯式強制類型轉換
顯式強制類型轉換需要使用強制類型轉換運算符,格式如下:
type()

(type)
其中,type為類型描述符,如int,float等。為表達式。經強制類型轉換運算符運算後,返回一個具有type類型的數值,這種強制類型轉換操作並不改變操作數本身,運算後操作數本身未改變,例如:
int nVar=0xab65;
char cChar=char (nVar);
上述強制類型轉換的結果是將整型值0xab65的高端兩個位元組刪掉,將低端兩個位元組的內容作為char型數值賦值給變數cChar,而經過類型轉換後nVar的值並未改變。
2、隱式強制類型轉換
隱式類型轉換發生在賦值表達式和有返回值的函數調用表達式中。在賦值表達式中,如果賦值符左右兩側的操作數類型不同,則將賦值符右邊操作數強制轉換為賦值符左側的類型數值後,賦值給賦值符左側的變數。在函數調用時,如果return後面表達式的類型與函數返回值類型不同,則在返回值時將return後面表達式的數值強制轉換為函數返回值類型後,再將值返回,如:
int nVar;
double dVar=3.88;
nVar=dVar;//執行本句後,nVar的值為3,而dVar的值仍是3.88

1,若已知x,y為double類型,則表達式:x=1,y=x+3/2結果是多少啊?

因為x,y都是double型,所以執行了y=x+3/2這個語句後,會輸出小樹部分,double型默認的是小數點後幾位我忘了,你自己調試下,就會明白了!

熱點內容
公共代理伺服器地址 發布:2025-01-15 17:59:53 瀏覽:817
android文件圖片 發布:2025-01-15 17:39:44 瀏覽:205
linux的路徑怎麼寫 發布:2025-01-15 17:18:49 瀏覽:185
php解壓程序 發布:2025-01-15 17:06:22 瀏覽:142
刷助力腳本 發布:2025-01-15 17:02:31 瀏覽:520
c盤里的用戶文件夾可以刪除 發布:2025-01-15 16:56:45 瀏覽:951
虛幻4編譯到哪裡 發布:2025-01-15 16:50:19 瀏覽:756
透明度漸變android 發布:2025-01-15 16:45:08 瀏覽:835
dos連接oracle資料庫 發布:2025-01-15 16:41:39 瀏覽:906
網路配置比較低怎麼做 發布:2025-01-15 16:35:38 瀏覽:362