定义函数的前面什么时候用char,什么时候用int
发布网友
发布时间:2022-09-07 22:32
我来回答
共4个回答
热心网友
时间:2024-11-08 00:36
定义函数时前面的函数类型是用来说明函数返回值的属性的。如果函数不需要返回值可以用void,如果返回值是字符型用char,是整数型则用int。
热心网友
时间:2024-11-08 00:36
返回值类型需要事先决定,并且一般应该保证return语句表达式类型能够安全地转化为返回值类型,以避免编译错误或损失精度导致预料以外的结果。
双引号内的字符串字面量的类型是char数组即char[]类型(数组长度等于字符数+1,这里的1指最后的默认添加的结束符'\0'),可以舍去长度信息,安全地退化为指向char字符的指针类型即char*类型。因此这里的返回值类型应该是char*。指针实质是定义了特殊操作的整数,大小在32位平台上一般为32位(范围和unsigned int相同),用char这种8位整数(不管是不是有符号的)容纳不下,自然无法指望结果正确。而int作为返回类型时,char*隐式转化为int时可以不损失精度(尽管可能超出范围,但符号位不会丢失),在%s对应的参数中被printf当做char*对象,因此输出正确;但这不是类型安全的操作,在其它平台上不保证有正确的结果,所以这里应当使用char*这样的和return返回值一定兼容的类型,而不是int。
====
[原创回答团]
参考资料:原创
热心网友
时间:2024-11-08 00:37
fun函数应该返回的其实是char*,因为返回值是实际上是一个字符串的起始地址,而在32位的机器上面地址就是32位的,而int也是32位的。因此int和char*都是32位的,因此程序正好不会出错。
而char是8位的,在返回的时候,截去了前面的24位的内容,只返回了8位的内容,因此返回的值就不能够正确得转化成32位的地址了。
热心网友
时间:2024-11-08 00:37
看函数的返回值是什么类型的,是字符型就用char;是整型就用int。