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...