绝对的初学者程序员,想知道您是否可以帮助我理解一些结果和术语。我试图遵循程序逻辑以及它如何计算出某些值。以下案例是尝试理解这些概念的示例。理解双精度和整数
#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