永发信息网

【小白】c++ strcmp(char* a, char* b)关于这个..

答案:2  悬赏:30  手机版
解决时间 2021-01-03 08:13
if(!strcmp(a,b))
如果 a和b一样 就返回0 然后感叹号 就变成1 条件为真 执行if下面的东西..
但如果不一样 不就返回负或正整数..如果加上感叹号..变成神摸?
最佳答案
strcmp(a,b)==>返回值有3种情况:
1.返回0说明a=b,那么!strcmp(a,b) 就为真true, 原来的语句可以理解为if(true){ }这样子就会执行后面的语句
2.返回值为大于0的比如3,那就是说a字符串大于b字符串,这时候!strcmp(a,b) 变为假false,原来的语句可以理解为if(false){ }这样子就不行后面的语句
3.返回值小于0比如-1,那就是说a字符串小于b字符串,这时候 !strcmp(a,b) 变为假false,同样不会执行IF后面的语句。
希望能够帮助你!
全部回答
*(char**)a 这个语句的执行顺序是 1.(char**)a 将变量a强制转换成char类型的指向指针的指针 2.对1算出来的地址解引用 其实对strcmp的形参做这些操作的目的只有一个,就是转换成char *类型,再传入。 这里a是一个指针,指向的地方又是一个指针(即a是指向指针的指针),a指向的那个指针所指向的地方才是存放我们真正想要的值 具体的说: 假设a这个变量的值是0x1234,由于a是个指针0x1234表示的当然是个地址, 如果对a变量解引用一次,就是到0x1234这个地址上去看看,假设看到的值是0x2345, 由于a是个指向指针的指针,即指向的地方存的还是个指针,就是0x1234这个地方存放的值0x2345还是个地址,这个地址0x2345就是一个字符串或者字符数组的首地址,起类型是char * 所以就可以作为strcmp的形参了 至于strcmp((char*)a,(char*)b))和strcmp(*(char**)a,*(char**)b)) 的差别在于strcmp((char*)a,(char*)b))中的a和b已经是某种类型的指针(不是指针的指针)了,就无需先强制转换成char **了,只需要转换成char * 就可以了 最后一个: return(*(char *)a-*(char *)b),是把指针a和b转换成char * 然后解引用一次后就得到了指针所指向的字符了,返回的值是两个字符的ascii值的差值 关于强制类型转换 char (var1) 和int(var1)区别: char (var1)告诉编译器把var1变量所在的内存的字节序列,每次一起解释1个字节(char是单字节类型的) int(var1)告诉编译器把var1变量所在的内存的字节序列,每次一起解释4个字节,即每次取4个字节的内存解释为一个int(int是4字节类型的,有的环境中是2字节的,就一次解释2个字节)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题1843年,一个军官在他回忆录的结尾用大
疾风之劲草是什么意思
7000平呎等于多少平方米
线上和线下区别是什么
百家姓有没有姓锁的?
顾客说不需要怎么处理
单选题近年来,我国实行执法责任制和执法过错
单选题“可怜赵军作坑魂,自此群雄不敢西”说
单选题中华民族曾经历无数考验:近代史上西方
培养幼儿良好行为习惯的方法
陆字多少画
男孩带观音有什么说法?
如图,已知,四边形ABCD中,CA平分角BCD,AC是BC
努尔白克力妻子简历
主营业务成本结转数
推荐资讯
请问,汇钱问题,请教大师?,我想买,但问题是我
建筑施工班组有哪些,建筑施工班组有哪些知识
我在撸被老婆发现了,没说什么。
根据海外市场的需要,珠江三角洲建立了农产品
在2013年中国吉尼斯之夜节目上,赵小龙表演以
单选题已知f(x)的最大值为M,则f(-x)-2的A.最
如图所示,△ABC与△A′B′C′关于点O中心对
淘宝帐号可不可以注销?如果可以要怎样注销?
怎样分享哔哩哔哩动画上的视频给好友或者发到
而以跟而已分别是什么意思啊?
曲沃县国土资源局史村国土所办公地址在什么地
某单位于“国庆60周年”期间组织职工到北京观
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?