2 trybye TRYBYE 于 2016.09.15 15:35 提问

对一个int类型赋值字符串会是什么结果

图片说明如图取值和取地址得到的结果不知道有什么联系

2个回答

qq423399099
qq423399099   Ds   Rxr 2016.09.19 13:28
已采纳

首先你的int a = "0";在有些编译器下是无法通过编译的,比如VS,而你的cfree是可以的
此时a保存的其实是"0"这个常量字符串位于常量区的一个地址。
你也没必要去理解这个结果,因为按标准来说就是错的

qq_29594393
qq_29594393   Ds   Rxr 2016.09.15 16:24

具体情况不太清楚,对C的了解也只是留在学过C语言
不过可以简易的说明一下变量,就是8个基础类型是放在栈中的,而字符串是对象,是放在堆中的,
放在栈中的变量可以互相转换,如果太大或太小,就会溢出,只有部分精度,
而对象是在堆中占 的一块内存,将对象赋值给变量,取得应该是前几位的地址

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
int类型与char类型
比较下面三个定义式的区别: int i = 1; char i = 1; char i = '1'; int用来定义整型变量,char用来定义字符型变量,要清楚的知道三个定义式的区别,可以比较它们在内存中的存储形式。 数据在内存中是以二进制形式存放的,而且是以补码表示的
c语言中整数赋值和字符赋值的一些问题
int i=289 char c='a'; c=i;这个问题,因为char是一个8位的存贮结构,你把一个16位的int的结构赋值给了它,结果只能是把高位的丢掉,所以i被减了256以后赋值给了c,即低位部分赋值给了c你在c='a'时,c存的是97但你后来把i也就是289给了c,所以值溢出了,(为什么这里i被剪掉的是256呢,这个256是怎么算出来的?) 补充:289是10进制 转换到8进制是000
java基本数据类型之间赋值与运算归纳
面对“byte b1=3;byteb2=7;byte b=b1+b2;”报错,而“int i1=3;int i2=7;int i=i1+i2;”不报错,进行了深入探究,从而引申出java基本类型之间赋值与运算操作的规律。通过自己制作的图例分析,达到对不同基本数据类型之间的赋值与运算结果的正确判断。不会再出现事实而非的回答,知道运算底层。好了,言归正传。
new String() 和直接赋值的注意事项
如图,最容易搞错的是第三个判断,这里涉及到一个概念
C语言int类型指针指向char类型变量简单实例
首先看段代码: int b = 12; int *p = &b; //指针变量p指向变量b printf("%p\n",p);//指针p保存的b的地址 printf("%p\n",&p);//指针变量b本身的地址 char a ='b';    printf("%p\n",&a); int *p2 =&a; //int类型指针变量p2 指向
关于char型赋值给int型
今天在知乎上看到一道关于C++的面试题:    char c=255;    unsigned short b=c;    cout 输出结果为: 在VC上运行之后得到的输出为 65535.   (2^16-1) 减小 c 的值,输出的b的值也相应减少。当 c = 127(2^7-1)时 输出的b值与c一致,继续减小,输出的值与 c 值保持一致,直到为0
MySQL在字符串类型字段上搜索整型值时无法使用索引
示例表如下:CREATE TABLE `user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(64) NOT NULL DEFAULT '', PRIMARY KEY (`user_id`), KEY `user_name` (`user_name`) ) ENGINE=InnoDB DEFAUL
int、short、char 类型超出范围赋值
以下使用g++编译器,win32平台)。 转载:http://blog.csdn.net/bladeandmaster88/article/details/52903510 具体流程如下: 00000000 00000000 00000000 00000000                 |65535 1.100000 % 65535 = 34464. 2.由于
Char型变量左移8位赋值给int型变量
a 这是C标准规定。 #include   int main()   {   unsigned char a = 0x8A;    a    printf("%X",a);      return 0;   }   C标准规定在进行位运算时,a
mysql查询int转字符类型
在使用mybaits查询数据,使用List>接收数据时,当id,age为int类型时,会报错,需要在查询的时候就将其转换为字符型。 查询方法如下: SELECT CAST(pid AS CHAR(32)) pid,name,CAST(age AS CHAR) age,gender,hometown FROM person