如图,c语言数据的自动转换,这两步看不懂,求解释,谢谢

2021-08-09 10:13:30 字数 3101 阅读 7329

1楼:赵德柱

c语言数据类型转换分自动转换和强制转换两类。

自动转换

自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:

1.若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

2.转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。

3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

4.char型和short型参与运算时,必须先转换成int型。

5.在赋值运算中,赋值号两边量的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型。 如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度, 丢失的部分按四舍五入向前舍入。

强制类型转换

强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

例如: (float) a 把a转换为实型(int)(x+y) 把x+y的结果转换为整型在使用。

强制转换时应注意以下问题:

1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。

2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

希望能够帮助到你,望采纳!

2楼:匿名用户

解释很清楚,**看不明白?

c语言程序 8转10 我看不懂,帮忙解释下谢谢

3楼:c学者

这个程序是不是有错误啊。。

main()

printf("%d",n);

}不知道算法对错,但是程序一定些错了

4楼:匿名用户

main()

printf("%d",n);

}晕,楼下这位不知运行过没有就说有错

5楼:匿名用户

你再看看程序啊有问题啊

c语言看不懂**,求一步步解释,谢谢

6楼:

答案正确啊。*(a+1)就是a[1],*(ptr-1)就是ptr[-1](用负数表示下标是非法的,这里只表示从ptr所指的地方向左移一个元素的位置)。那么——

voidmain(void)

;//使a[0]==1,a[1]==2,a[2]==3,a[3]==4,a[4]==5

int*ptr=(int*)(&a+1);//声明指针ptr并用(int*)(&a+1)初始化到指向数组a的元素5的后面一个元素,由于&a是(*)[5]型,所以要用(int*)强制为int*以便与prt类型匹配

printf("%d,%d",a[1],*(ptr-1));//return;}

c语言题目。这道题看不懂。。求大神详细解释下,谢谢

7楼:匿名用户

答案选b。

定义结构体数组c

未执行f(c)时,c[0]为 qian,f,95,92 c[1]为 sun,m,98,99

执行f(c)时,将c作参数传递

执行f(c)后将c[1]的值改变为 zhao,m,85,90f()函数作用就是对c[1]重新赋值

请教这个c语言程序,最后的递归法我没看懂,求大神帮忙解释下,谢谢!

8楼:匿名用户

n = 1或2明白吧

f=count(n-1)+count(n-2):第n阶时,因为一次只能上1或2阶所以只可能从n-1或n-2阶上来,上来的方法也就是这两种方法的和了啊啊啊

9楼:ben笨_小剑

这是一种类似斐波那契数列的思想。

我有n个台阶,就是f(n)个走法

那我先走n-1个台阶,再走一步,就是f(n-1);

那我先走n-2个台阶,再走2步,就是f(n-2);

10楼:西瓜苹果胡桃

这咋解释呢。。。。首先得从数学或逻辑角度理解,然后转换成**。

数学或逻辑角度上来看,n层的楼梯的爬法=n-1层的楼梯的爬法+n-2层的楼梯的爬法,这个能理解吗?

一道c语言程序填充题,问题如下,我看不懂为什么这么填,请详细解释一下,谢谢!

11楼:寂静深阑斜

说下这段**思路。a、b两个数组,总有一个数组元素最先被使用完,那么之后存入c数组的元素只能是另一个数组的。i和j作为角标,就是用来表明a、b数组各用了多少元素。

如果a、b数组都没用完,那么就要判断a、b谁出的元素小,小的存入c中(根据要求知c中元素由小到大排列)。

c语言,关于位运算符的,这个怎么分析啊,有点看不懂,求高手解答啊!谢谢!!

12楼:匿名用户

这里都是按位与运算和右移运算符,一个个看, 知道是这样计算就行了,具体计算是计算机的事情

13楼:4向日葵

程序出自何处?以我看: 没有功能,就是老师让学生练习移位操作的,要是单片机的程序的话可能就有别用的了

14楼:5千零一

把位运算符看懂,就差不多会了。

15楼:匿名用户

这个程序里有两种位运算符:按位与(&)、按位右移(>>)。

先看优先级,这个程序里“()”的优先级最高,“>>”次高,“&”优先级第3;

位运算符都是按二进制运算的,所以要先将所有参与位运算的数字转换为二进制。

&:只有对应的两个二进制位均为1时,结果才为1,否则为0,例如:

010010

& 000110

____________

000010

>>:将操作数右移n位相当于该数除以2的n次方,例如:60>>2=15。

至于实现什么功能,你自己算出结果来分析吧

C语言问题。这道题看不懂啊,求大神详细解释下,谢谢

1楼 烟火夜空 这是 统计 字符串 中字符个数的。 还有 goodbye 写错了。如果 中间没有 空格,那么 这个结果应该是 8 2楼 s中存放的是字符串的首地址,指针p从字符串开始搜索到末尾,返回p s就是字符串的长度 c语言题目。这道题看不懂。。求大神详细解释下,谢谢 3楼 匿名用户 答案选b。...

数据类型后面的_t是什么意思,time_t类型是什么意思?c语言里有这个吗、不懂,求解

1楼 匿名用户 是一个结构的标注,可以理解为 type typedef 的缩写,表示它是通过 typedef 定义的, 而不是其它数据类型。 例如uint8 t,uint16 t,uint32 t 等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,对于 的维护会有很好的作用。 ti...