c++几个简单的问题,大虾帮帮哦

1, char c1=100,c2=100;cout<<(c1*c2);
答案为什么是:10000呢
2,int a=258,b;unsigned char c;b=c=a;则b=2为什么呢??
3,int s=100;int ss[s];cin>>ss;编译为什么认为第一个错了???
4,for(int i=5,sum=0;i<10;sum++,i++)sum+=i;
则for语句为什么循环0次呢
5,#include<iostream.h>
#define a 123;
void main(void)
{cout<<a<<'\n';}
第四行怎么出错了呢??
谢谢哦 (*^__^*) 嘻嘻……

1.因为char是一个字节表示的,100表示小写字母c,他的整数形式是100,当c1*c2时,经过类型转后为int形,所以就是100*100=10000。
2.因为char的取值范围是0-127,所以二进制只有8位,258的2进制值为100000010,c只能取到后8位,后8位是00000010,值是2,c的值又赋给了b,所以b是2.
3.不能这样直接这样定义数组,int ss[100]是可以的,或者100是由宏来定义,这个数组的大小值,必须能在编译时确定,而s是在运行时才确定的,所以不可以。但是像java这样的语言是可以的。
4.我不知道你的为什么循环0次,我自己的机器上循环了5次。
5。编译器在编译代码时,会直接将define的内容替换掉,你的第4行就成了cout << 123;你能看出问题所在了么?
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-17
1:char 储存的也是数字,只不过表现为字符。100*100得数当然是10000
2:unsigned char储存范围是 0~255,258溢出了,256=0,257=1,258=2,以此类推
3:开数组必须使用常数,不能使用变量,只能int ss[100]
4:不是循环0次,而是调试的时候将一行的循环视为一个语句,而一次执行完毕
5:
#include<iostream>
using namespace std;
#define a 123
void main()
{
cout<<a<<'\n';
}
define 后面不用;
第2个回答  2011-06-17
1、虽然是char型,但做运算式可以当做int型运算。
2、char型是8位,int型是2(或4)位,258化成二进制:0000000100000010B
c=a;得c=00000010B=2;然后b=c就得出b=2;
3、
4、我运行了一下,循环了5次;
5、相当于cout>>123>>'n';这样不对吧;

c++几个简单的问题,大虾帮帮哦
1.因为char是一个字节表示的,100表示小写字母c,他的整数形式是100,当c1*c2时,经过类型转后为int形,所以就是100*100=10000。2.因为char的取值范围是0-127,所以二进制只有8位,258的2进制值为100000010,c只能取到后8位,后8位是00000010,值是2,c的值又赋给了b,所以b是2.3.不能这样...

高分求助一个C++问题(急!!!)
楼主有几个问题 1、vector是模板类,必须指定类型才能用,比如vector<long> 2、array是保留字,不能用作变量名,至少在vc2008下是这样的,所以我改成了my_array 3、vector::size_type,同1问题,也得给出类型vector<long>::size_type 4、 for(vector::size_type i=array.size();i>=0;--i)...

C++程序问题,请大虾解答.为啥非法输入是数字这个程序正常,但是是字母之 ...
如果能正常退出,说明程序没有问题,是对的。因为你其它的非法输入所对应的ASCII码基本都不会是1,2,3,0,比如说大写字母好像是从65还是67开始的,小写字母是从97开始的,这些非0数在for循环中做条件判断时都是被认为是真值,所以会一直进循环 。要想实现你的意图,要么把choice改成char型,要么就...

C++上的一些运算符顺序的问题:我是C++初学者,对运算符顺序不是很了解...
c.按位逻辑运算符比关系逻辑运算符具有更高优先级:a>b&c 等价于a>(b&c)d.还有一个概念要很明白:左值和右值的区别。a=1; a是左值,1是右值 赋值运算符的左边必须是变量,而不是值。(++a)=1; 是会报错的。④你有两种方法完全掌握C++的运算符问题:1.必要性逻辑:C++是一门几乎理论...

C++完数问题!大虾帮忙啊
for(i=1;i<=x,i++)这个for循环里面你那个分号你写成逗号了,应该这样for(i=1;i<=x;i++)但是你这个判断完数的条件有错啦!i<=x 而是i<x,因为完数的意思是除本身以外的全部因子相加=这个数的本身!

C语言C++编程,问题如图。普通的写法我会,请大虾照提示写出,用三步运...
(scanf("%d",&score),score>=70)?printf("涨薪"):printf("降薪");

C++构造函数问题?
和构造函数无关,构造函数所做的操作主要是对数据的初始化。申明一个新对象,简单讲经过了两部操作,第一步分配空间(new),第二步初始化(调用构造函数),负责分配空间的是C++的运行库,在WINDOWS下最终是调用virtualalloc(你如果想查这个函数可以去查,这个用于虚拟内存分配的).但实际上用new定义一个...

请教一个关于C++的问题,在C++中分析方法和欧拉方法的区别是什么?请大虾...
有一个学科叫数值计算,专门研究这样的问题。解微分方程最简单的数值方法是欧拉方法。我们首先确定计算的步长dt,比如0.01秒,那么欧拉方法就假设这个函数在这个时间段内是个常数,那么我们就可以一步一步迭代将整个y关于时间t的数值给求出来。那么给定时间t的y值就可以通过这样的方法近似地计算出来。很...

C++ 关于ignore等小问题
1. cin.get遇到'\/'结束,但并不读取'\/',这样,第二此调用cin.get时,又碰到'\/',于是直接结束,所以,第二个没有输出。当你使用ignore跳过一个'\/'时,当然就可以正常读取后面的了。2. 你虽然输入的字符超过20个,但并没有都存放到ch数组中啊。第一次cin.get只有“I like C++. ”存放到...

一道简单的C++ DOG类题,希望各位大虾帮下忙啊,急!!
class FunnyString { private:char *Funny;public :FunnyString()\/\/初始化 { Funny=new char('\\0');} FunnyString(const FunnyString &str)\/\/CONSTRUCTOR { Funny=new char [strlen(str.Funny)+1];strcpy(Funny,str.Funny);} FunnyString(const char *str)\/\/字符串转换 { Funny=new char [...

相似回答
大家正在搜