成功与失败的那一点差异

故事分享

成功与失败的那一点差异

有这样一个故事:古时一个考生在考试前做了三个梦,第一个梦梦到自己在墙上种白菜;第二个梦梦见在下雨天,他戴了斗笠还打伞;第三个梦梦到跟心爱的表妹躺在一起,但是背靠着背。

第二天一早,考生找到算命先生,让他解梦。算命先生一听,连连摇头说:“你还是回家吧。你想想,高墙上种菜不是白费劲吗?戴斗笠打雨伞不是多此一举吗?跟表妹躺在一张床上,却背靠背,不是没戏吗?”考生一听,心灰意冷,回店收拾包袱准备回家。店老板感到奇怪,问:“明天不是要考试吗,你怎么今天就回去了?”考生如此这般说了一番。店老板乐了:“我也给你解一下。我倒觉得,你这次不留下来就太可惜了。墙上种菜说明你会高种(中),戴斗笠打伞说明你有备无患,你跟表妹背靠背躺着,说明你就要翻身了啊!”考生一听,很有道理,精神为之一振,以积极的心态应试,居然得了个第三名。

无独有偶。从前,有一位国王,梦见山倒了,水枯了,花也谢了,便叫王后给他解梦。王后说:“大势不好,山倒了指江山要倒;水枯了指民众离心,君是舟,民是水,水枯了,舟也不能行了;花谢了指好景不长了。”国王惊出一身冷汗,从此患病,且愈来愈重。一位大臣参见国王,国王在病榻上说出了他的心事,大臣一听,笑着说:“这是好兆头,山倒了指从此天下太平;水枯指真龙现身,国王,你是真龙天子啊;花谢了,花谢见果子呀!”国王顿觉全身轻松,很快痊愈。

同样的梦境,算命先生的一席话和店老板的一席话,却有着天壤之别。前者让考生心灰意冷,未入考场,精神先垮下去了;后者却能够变消极为积极,让考生具备良好的心态,从而取得成功。王后和大臣不同的说法,也让国王有了截然不同的境遇。可见,消极的人看到的是困扰,让人感受到生活处处是阴影;积极的人看到的是希望,让心灵拥有更加广阔的晴空。

从两个故事的另一面看,任何人的生活,都会有为外界干扰、为旁人左右的时候。外来的因素总是起着或积极或消极的作用。所以,作为一个正常的人,在遇到生活的难题时,重要的是不管别人的心态如何,都要有自己正确的立场,保持良好的心态,否则一不小心,就会偏离正常的生活轨道。任何情况下,积极的心态有助于人们克服困难,看到希望,保持旺盛斗志;而消极的心态只会使人沮丧失望,对生活充满抱怨,甚至限制和扼杀自身的潜力。

拿破仑曾说:“人与人之间只有很小的差异,但是这种很小的差异却可以造成巨大的差异。很小的差异即积极的心态还是消极的心态,巨大的差异就是成功和失败。”事实就是这样,成功和失败之间的区别在于心态的差异:即成功者着意亮化积极的一面,失败者总是沉迷消极的一面。




好书推荐



书 名: 想好了就豁出去
<think>嗯,用户问的是memcmp函数在比较成功失败时的返回值区别。首先,我需要回忆一下memcmp的基本功能,它用于比较两个内存区域的内容。根据引用[2]里的内容,memcmp比较的是buf1和buf2的前count个字节,返回值有三种情况:小于0、大于0和等于0。成功失败在这里可能是指比较的结果是否相同,所以需要明确用户的问题中的“成功”和“失败”具体指什么。 通常来说,比较函数如memcmp的返回值并不表示函数执行是否成功,而是比较的结果。函数执行失败可能是指参数无效导致的问题,但根据C标准,memcmp应该总是成功执行,只要传入的指针有效且count不超过内存范围。所以用户可能混淆了比较结果和函数执行状态。需要澄清这一点。 根据引用[2],返回值是根据第一个不同的字节的差值决定的。如果所有字节都相同,返回0,即“成功”比较为相等的情况。否则返回非零,根据第一个不同字节的大小关系决定正负。用户可能将返回0视为成功,非零视为失败,但正确的理解应该是返回0表示相等,非零表示不等,而函数本身执行是否成功并不通过返回值体现。 需要进一步解释返回值具体如何计算,比如在32位和64位系统下是否有差异,以及当比较的字节数超过系统位数时的行为。引用[2]提到,当比较的字节数小于系统位数时,返回值可能只有-1、0、1,而超过时则是实际差值。这可能影响用户对返回值的理解,需要举例说明。 总结回答结构:先说明返回值的三种情况,再解释“成功”和“失败”的正确含义,指出没有执行失败的情况,最后举例说明不同情况下的返回值。同时,结合用户提供的引用,特别是引用[2],确保回答准确。</think>关于memcmp函数返回值中“成功失败”的理解需要特别注意:**该函数没有传统意义上的执行失败返回值,其返回值仅表示内存内容的比较结果**。具体区别如下: #### 一、memcmp返回值逻辑 1. **返回0** 当两个内存块的前$n$个字节**完全相等**时返回0,例如: ```c char buf1[] = {0x01, 0x02}; char buf2[] = {0x01, 0x02}; memcmp(buf1, buf2, 2); // 返回0 ``` 2. **返回负数** 当发现**第一个不匹配的字节**时,若`buf1`的字节值**小于**`buf2`对应字节值,返回负数: ```c char a[] = {0x01, 0xFE}; char b[] = {0x01, 0xFF}; memcmp(a, b, 2); // 返回负数(0xFE < 0xFF) ``` 3. **返回正数** 当`buf1`的字节值**大于**`buf2`对应字节值时返回正数: ```c char x[] = {0x02}; char y[] = {0x01}; memcmp(x, y, 1); // 返回正数(0x02 > 0x01) ``` #### 二、特殊注意事项 1. **返回值大小系统位数相关** - 当比较字节数**小于操作系统位数/8**(如32位系统下比较3字节)时,返回值可能简化为$-1/0/1$[^2] - 当比较字节数**超过系统位数/8**时,返回值为实际差值(例如`buf1[i] - buf2[i]`) 2. **不存在“函数执行失败”的返回值** memcmp函数本身没有错误码返回机制。若传入非法指针(如NULL),程序会直接崩溃,而非通过返回值表示错误[^2]。 #### 三、应用场景示例 ```c // 检测内存数据一致性 if (memcmp(encrypted_data, expected_data, 16) == 0) { printf("解密成功\n"); } else { printf("数据被篡改\n"); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值