设变量iVar是一个整型变量,则执行赋值语句iVar = "2" + "3" ,结果是?

如题所述

没有结果,这样是会编译错误,解决方法如下:

1、首先新建一个76.php,输入php网页的结构(<?php?>),如图所示。

2、声明PHP与浏览器交互的文件类型和编码,如图所示。

3、然后定义一个整型变量$i = 99,如图所示。

4、接着使用 is_int() 函数判断变量 $i 是否是整型,如图所示。

5、最后运行网页,查看输出结果,如图所示就完成了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-05-11

下面的回答都给出答案,但是比较好奇字符串常量被放在了什么地方,于是这里联想一下:

#include<stdio.h>

int b=3;

void main(void)
{
    int a=0;
    printf("---%x\n",(int)("7"));
    printf("---%x\n",(int)("8"));
    printf("---%p\n",&a);
    printf("---%p\n",&b);
    printf("---%p\n",main);
}
//打印结果:
---400644
---40064d
---0x7fffef1a8fbc
---0x601020
---0x400520

进程被分为三个区域:文本、数据和堆栈。对应上面的程序简单分析一下这几个区域

1)文本区域:

文本区域也叫做代码段,是由程序确定的,

它包括代码(指令)和只读数据,对应上面代码中的main函数。

2)数据区域(静态内存分配(static)):

数据区域也叫做数据段,

它包括已初始化和未初始化的数据,静态变量存储在这个区域中。

详细了解数据区域:分成初始化为非零的数据区(对应上面代码中的全局变量a)、BSS和堆(Heap)三个区域。

3)堆栈区域(动态内存分配auto,默认,所以不用关键字auto):

堆栈区域也叫堆栈段,

它用于给局部变量动态分配空间,对应上面代码中的全局变量b。

内存分配如下:

低地址  代码段

数据段

高地址  堆栈段

到这里回到程序:

main(代码段) ---> 0x400520

b(数据段)       ---> 0x601024

a(堆栈段)       ---> 0x7fffef1a8fbc

和上面可以对应上。

("7") --> 0x400644

("8") --> 0x40064d

这2个地址在代码段和数据段之间,百度一下可以发现字符串常量是放在文字常量区。

文字常量区是什么东西?

void main(void)
{
    unsigned long c=(unsigned long)("789");
    printf("---%s\n",c);
    *((unsigned long *)c) = "4";
    printf("---%s\n",c);
}

---789

Segmentation fault (core dumped)

出现了段错误,所以个人认为文字常量区可能是在代码段中。

本回答被网友采纳
第2个回答  2017-05-11

没有结果,这样是会编译错误,但是如果你

iVar = (int)"2" + (int)"3" ;

是可以的,它的结果是两个字符串的地址之和。

如果里面的双引号变成单引号

iVar = '2'+'3';

这样是不会报错的它的结果是2和3的ascii码的和。

第3个回答  2017-05-11
类型不匹配,编译通不过。
相似回答