絕對的初學者程序員,想知道您是否可以幫助我理解一些結果和術語。我試圖遵循程序邏輯以及它如何計算出某些值。以下案例是嘗試理解這些概念的示例。理解雙精度和整數
#include <stdio.h>
void main()
{
int inum = 11;
double dnum = 2.56;
double dec_result;
int int_result;
dec_result = inum/4 + (3.0 * inum)/5;
printf("value in dec_result is %.2f\n", dec_result);
dec_result = (double) inum/4 + (3 * inum)/5;
printf("value in dec_result is %.2f\n", dec_result);
int_result = (int) dnum * 10 + 1;
printf("value in int_result is %d\n", int_result);
int_result = (int) (dnum * 10 + 1);
printf("value in int_result is %d\n", int_result);
}
我知道結果,因爲我通過Visual Basic運行它。我正在努力遵循的是它如何實現它。
我的工作方式:
inum
和dnum
我相信是「爲價值觀的名字」,並可能互換使用說x或y。與int_result
和dec_result
相同。
首先dec_result是8.60
dec_result = inum/4 + (3.0 * inum)/5;
11 (an integer)/4 + (3.0 * 11)/5
11 (an integer)/4 + (33.0)/5
然後我有點失落...... 2.75 + 6.6?
不知何故,由於inum是一個整數,如果寫成分數,值將被截斷。但隨着括號內的餘數先乘以後它變成小數位數?
它按佔位符指定的小數位顯示,並由數據類型double指定。
二dec_result是8.75
dec_result = (double) inum/4 + (3 * inum)/5;
= as double is a cast operator you change inum from int to double, so therefore:
= (double) inum/4 + (33)/5;
Then = inum/4 becomes 2.75 + 33/5
爲什麼五分之三十三位變成6? 它按佔位符指定的小數位顯示,並由數據類型double指定。
int_result = (int) dnum * 10 + 1;
= cast operator alters dnum a double to integer so 2.56 becomes 2
= 2 * 10 + 1
= 20 + 1
= 21
應該是一個整數作爲支架之前,指定的,並且還%d
佔位符裝置,以提供該值作爲數沒有小數點。
int_result = (int) (dnum * 10 + 1);
我得到: =(int)的(2.56×10 + 1) =(int)的(25.6 + 1) =(INT)(26.6) = 26
,因爲該值應該是括號前面指定的整數,也是佔位符意味着提供值作爲沒有小數點的數字。
我的邏輯正確嗎?
謝謝兩位,我真的很努力理解的邏輯,但認爲我想起來了! – Newtoprogram