当前位置: 代码迷 >> C语言 >> 赋值表达式中不同数据类型相互赋值的问题
  详细解决方案

赋值表达式中不同数据类型相互赋值的问题

热度:195   发布时间:2005-12-11 12:14:00.0
赋值表达式中不同数据类型相互赋值的问题
为什么这个编译能通过的啊
int main(int argc, char* argv[])
{
char **p=0;
char **q=p;
return 0;
}
而这个就不行啊
int main(int argc, char* argv[])
{
char **p=1;
char **q=p;
return 0;
}

[此贴子已经被knocker于2005-12-11 12:48:24编辑过]

搜索更多相关的解决方案: 赋值  类型  数据  表达  

----------------解决方案--------------------------------------------------------
int main(int argc, char* argv[])
{
char **p=(char **)1;// 0是一个特殊的值,即为NULL
char **q=p;
return 0;
}
----------------解决方案--------------------------------------------------------
还是不懂,班主说什么呢??

char **p=1;

是不是等于char **p;p=1;啊??
----------------解决方案--------------------------------------------------------
是的,这只是一个赋值表达式中数据类型不对称的问题,只要强制转换就可以了。


----------------解决方案--------------------------------------------------------
int main(int argc, char* argv[])
{
char *p=0;
int i=p;
return 0;
}

与这个的错是一样的道理
----------------解决方案--------------------------------------------------------
int i=int(p);

p是一个地址;难道不可以是int 类型吗??
----------------解决方案--------------------------------------------------------
有点明白了,p其实是有直的,

可能是123456,435566........

只能把地址给p

----------------解决方案--------------------------------------------------------
以下是引用layabout在2005-12-11 12:52:00的发言:
int i=int(p);

p是一个地址;难道不可以是int 类型吗??

p的确是个int 数值,其实,任意型式的数据在内存中都以0,1表述。

同样的内存单元

1111111111111111 如果定义为int型,它是表示多少?

如果定义为unsigned int 它又是表示多少?

如果定义为float它又是表示多少?

。。。。。。。

理解上面的这个问题有助你理解本问题为什么要强制转化的原因。


----------------解决方案--------------------------------------------------------
16个1 int 型是-32768

unsigned int 是65535

float 是不知道.......
----------------解决方案--------------------------------------------------------
  相关解决方案