c语言中 int(number) 的意义和作用(其中number为一个变量)。是类型转换?类型转换也可以是(int)number
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中 int(number) 的意义和作用(其中number为一个变量)。是类型转换?类型转换也可以是(int)number相关的知识,希望对你有一定的参考价值。
对的,这两者是等价的。这是c语言里的强制类型转换,就是把number这个变量的类型强制转换为整型,那么用这种强制转换是把number以int即整型参与运算的。但是注意,强制转换并不改变变量定义时所属的类型。比如你定义的number原来是float型的。强制转换后,如果再次用到number,则number还是float型。 建议你看一下谭浩强的c语言设计,很不错的。讲的很详细。希望可以帮到你 参考技术A 是类型转换,int(number)是C++的写法,(int)number是C的写法,作用相同,C++全面兼容C。 参考技术B int( number ) = (int )number = *(int *)&number这三个效果是一样的,都是类型转换
但对于结构体来说,只能用第三种.
typedef struct SA
char a[128];
;
typedef struct SB
int a;
char b[124];
;
SA Sa;
SB Sb;
如果用Sb = ( SB )Sa;和Sb = SB(Sa);会出错,编译不通过
只能用Sb= *(SB *)&Sa;本回答被提问者采纳 参考技术C 在C语言中
int (number)这种形式是非法的.
如果在程序中使用了,会直接报错.
强制类型转换只能是
(int)number 参考技术D 是类型转换,没问题
C语言“局部变量作用域”的问题
void add(int);
main()
int num=3;
add(num); //调用add()函数
printf("%d\n",num); //输出变量num值为3
void add(int num)
num++; //num自增1
printf("%d\n",num); //输出变量num值为4
为什么不对呢?哪里不对呢?
应该是没有问题的。先输出add函数中的num值4,再输出main函数中的num值3。main函数中的num值没有发生变化。实参传递给形参,形参改变了不会影响实参。
具体分析过程如下图:
程序代码如下:
void add(int);main()
int num=3;
add(num); //调用add()函数
printf("%d\\n",num); //输出变量num值为3
void add(int num)
num++; //num自增1
printf("%d\\n",num); //输出变量num值为4
在Visual C++ 6.0中编译会有个警告,不影响。
warning C4013: 'printf' undefined; assuming extern returning int
0 error(s), 1 warning(s)
如果要去除警告,只需程序开始加一条:#include<stdio.h>
在Visual C++ 6.0中运行结果如下图:
参考技术A没有什么不对啊。完全正常的。
因为从main()调用add( )函数时的实参num=3在完成了传递值以后,main( )与add( )函数的变量之间就相互没有了关系。add( )函数中num++并输出4以后,对main( )函数中的变量没有丝毫的关系,所以返回后,输出main( )中的num的值仍是3。
参考技术B 这里涉及到变量作用域的问题,局部变量的作用域从声明开始,到所在函数的结束,,在子函数内的变量,同名的其他变量将被暂时屏蔽。所以会出现以上情况。在add函数内,add内的sum将暂时屏蔽main内的sum,但这两个sum并不是同意变量,你可以将他们在内存的地址打印出来证明一下。这时候add的sum接收传入的值3,自增后为4,将打印4,在add函数结束后,main内的sum恢复作用,但他们不是同意变量,所以main内的sum值并没有改变 参考技术C代码注释部分是正确的。函数传参是值传递,并没有返回计算值,所以在main函数中num的值仍为3。这样写就很清楚了。传递的变量名与之前的值是不同含义的。
#include <stdio.h>void add(int);
int main()
int num=3;
add(num); //调用add()函数
printf("%d\\n",num); //输出变量num值为3
void add(int x) //值传递
x++; //参数x自增1
printf("%d\\n",x); //输出变量x值为4
参考技术D
这个是因为你写的函数调用参数值的时候只是把main函数里的num值复制了一份过来,对复制的值加1,而并没有对原值进行修改。想要修改原值,需要用指针把地址传过来。(你需要去看指针传参的知识)
以上是关于c语言中 int(number) 的意义和作用(其中number为一个变量)。是类型转换?类型转换也可以是(int)number的主要内容,如果未能解决你的问题,请参考以下文章