c++问题!!!!紧急求救c++高手!!!

while((*str++=*str++)!='\0');这个语句是什么意思???
不好意思,两个str不一样,一个是str1,另一个是str2,打错字了。

第1个回答  2011-10-10
while((*str++=*str++)!='\0')两个str一样确定?
while((*dst++=*src++) != '\0') 吧
这个等价于:
while(*src != '\0')
{
*dst = *src;
dst++;
src++;
}
把一个字符串src,赋给另外一个字符串dst追问

你得到的答案是正确的,请解释一下你是怎样得到的??谢谢了!!!

追答

这个是重写strcpy的经典语句了
*str1++=*str2++
*str1++这个++是后缀形式,先返回*str1的值,然后对str1进行++运算,*str2++也一样,(要了解*,++的优先级)
整个表达式就变成了:
*str1 = *str2;
str1++;str2++;
(*str++=*str++)!='\0' 凡是在表达式中有++或者--操作的,如果是后缀形式,你可以在整个表达式计算完后再进行++操作
(*str1 = *str2) != '\0'
str1++;str2++;
*str1=*str2赋值表达式,整个表达式的值就是等式最右边的值即*str2
while((*str1++=*str2++)!='\0')的判断条件就是*str2 != '\0'

第2个回答  2011-10-10
str 应该是一个字符指针, 这个表达式应该是要判断 str现在是不是已经指向字符串的末尾了,但是这样写是错误的 ,应该这么写 while((*str++!='\0') 当到达末尾以后 就不满足条件
第3个回答  2011-10-10
第一步:*str=*str;
第二步:后一个str++;
第三步:前一个str++;相当就在原来str的基础上自增了2;
第四步:在比较第一步的值是否为\0,不为\0,做一个空语句,回到第一步,为\0,退出循环
第4个回答  2011-10-10
就是这串字符串自己给自己赋值

C++问题,高手请进!!!急!!!
include <iostream> include <algorithm>\/\/这是用于排序的库函数 include <ctime> using namespace std;int main(){ srand((unsigned)time(0));\/\/时间种子 int N;int a[100],b[100];cin>>N;for(int i=0;i<N;i++)a[i]=rand()%1000+1;\/\/产生随机数 sort(a,a+N);\/\/这个用来排序...

紧急求救!!!c++高手进!!!c++问题!!
name是一个字符串的首地址,系统会把它当做字符串输出处理;你试试cout<<&name[0]<<endl;应该也输出Ding

高分求助一个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++指针和字符串的问题 紧急!!! 高手请进
你对char *型的a 进行"abcdefg"的赋值,"abcdefg"存在静态区,是常量,不能改变,所以下面的a[0]='b'是错的,它在试图改变常量的值。

C++的几个问题,高手进!
1. 调用有问题 函数是传地址,你调用的时候传了值0 2. 位运算 2|4=6 (倒数2,3位为1) ~3表示二进制最后两位为0其他为1 两者异或只有不同的值才为1 ,所以最后结果应该2^32-5 (我不肯定 自己去实验吧)3. =b0只是赋值,类型还是A &a1=b0则是传进来地址了,其实就相当于类型B 4...

C\\C++问题(基础),望高手解答,(回答完整者额外加20~50币),具体在下面...
强制转换为结构体的指针。2、(int)a+6-c是强制转换a还是a+6-c ? (int)(a+6-c)是不是转换a+6-c?(int)a+6-c是强制转换a。 (int)(a+6-c)是转换a+6-c,转换计算结果 问题2:这7个字符的地址是强制固定的, 编译器在编译链接时 会指定的,放在常量区,运行中不可以更改的。

一道C++的问题,哪位大神帮帮忙啊,新手压力很大啊。。。
1,调用GetMemory( str )后, str并未产生变化,依然是NULL.只是改变的str的一个拷贝的内存的变化 2,strcpy( str, "hello world" );程序运行到这将产生错误。3,new的时候有可能内存出错,应该在*p = (char *) malloc( num ); 后判断内存是否申请成功,应加上:if ( *p == NULL ){ .....

C++问题,需要详细解答过程,详细!!!
问题一:a=10,b=0 分析:b%=b++||++a可以看成b%=((b++)||(++a)),由于b++为非零,所以表达式=((b++)||(++a))肯定为真,即1,所以程序就不判断++a了,因此a仍然为10,b%=1当然为0了。问题二:d=1 分析:char最大为127,unsigned char最大为255,所以256显然溢出了,所以...

一道C++题目,求高手!!!
int x;\/\/x存放打破那个人的编号,x=1是A,x=2是B,x=3是C,x=4是D for(x = 1;x <= 4;x ++)if(((x != 1) + (x == 2) + (x != 1) + (x != 2) <= 3))\/\/x!=1代表A没有打破,x==2代表B打破的,x!=2代表B没有打破 最后<=3表示至少有一个人说谎 .如果...

C++难题!!!
请高手帮我看下,主要是输入部分不知道如何把那些数列输入到数组里面去问题补充:如:输入:[Max]8 3 15↵[Min]9 10 1 2 7↵[Median]2 4↵[Mean]30 20 10↵↵则输出:{20}10 20 30 {15}3 8 15 {3}2 4 {1}1 2 7 9 10 够你练得了!

相似回答