C++三目运算符 麻烦求ps大神帮忙p图看看这个程序哪里出错了

运算符中的一些小技巧 - 程序员的那些事
运算符中的一些小技巧
(点击上方公众号,可快速关注)来源:大额_skylar(@大额大额哼歌等日落)网址:/skylar/p/4299235.html- 记下一些关于运算符的小技巧或容易出错的地方 %运算符取余运算符运算结果的正负号由第一个运算子的正负号决定,比如:1 -1 % 2 // -12 1 % -2 // 1所以有时候对负数取余会出现错误,使用绝对值函数可以避免错误:// 会出错function isOdd(n) {return n % 2 === 1;}isOdd(-5) // falseisOdd(-4) // false // 正确了function isOdd(n) {return Math.abs(n % 2) === 1;}isOdd(-5) // trueisOdd(-4) // false +运算符+运算符与其他运算符不太一样,我们知道它可以用来连接字符串操作,是因为用+运算符的时候它通常会将其他类型的值转为字符串,但是除了它比如说-运算符等都会将其他类型的值转换为数值,像这样:var now = new Date();typeof (now + 1) // &string&typeof (now - 1) // &number&当运算子中出现对象的时候:1 + [1,2]// &11,2&1 + {a:1}// &1[object Object]&则先调用该对象的valueOf方法。如果返回结果为原始类型的值,则转换为字符串;否则继续调用该对象的toString方法,然后转换为字符串。但是:{a:1} + 1// 1({a:1})+1&[object Object]1&这是为什么呢?此时{a:1}被当做了代码块处理,而这个代码块没有返回值,所以整个表达式就返回1了。但是放在了圆括号中的{a:1},因为js预期()中是一个值,所以它就又被当做对象处理了。**特殊表达式:**1. 空数组+空数组先调用valueOf()返回空数组本身,再调用toString(),返回空字符串。[] + []// &&2. 空数组+空对象[]得到”,{}得到”[object Object]“[] + {}// &[object Object]&3. 空对象+空数组{}被视作代码块省略,+[]就是将[]转换为数值的意思了得到0.{} + []// 04. 空对象+空对象同样{}被当做代码块省略了,+{}转数值得到NaN{} + {}// NaN如果第一个空对象不被当做空代码块的话:({}) + {}// &[object Object][object Object]& ({} + {})// &[object Object][object Object]& console.log({} + {})// &[object Object][object Object]& var a = {} + {};a// &[object Object][object Object]&此外,当+运算符作为数值运算符放在其他值前面的时候,可以用于将任何值转为数值,就像Number函数那样:+true // 1+[] // 0+{} // NaN !取反运算符!取反运算符连续对同一个值进行取反运算等于将其转换为对应的布尔值,就像Boolean函数那样:!!x // 等同于 Boolean(x)此外,如果我们想排除null这个对象,可以这样写:if(!!x){//do something!}这是因为:!!null 值是 false,其他的 object !!obj 值都是 true。 ~否运算符~运算符是根据值的二进制二进制形式进行运算的。~ 3 // -4它的运算原理就是根据数值的32位二进制整数形式运算,补码存储的原理如果是负数,需要将取反后的值减一再取反然后加上负号。比较麻烦,但是我们可以记成一个值与它取反后的值相加等于-1.~~2.9// 2两次否运算能够对小数取整,并且这是取整方法中最快的一种。 ^异或运算符两次异或运算交换两个数的值:var a = 10;var b = 99; a^=b, b^=a, a^=b; a // 99b // 10&& 左移运算符左移0位可用于取整:13.5 && 0// 13 -13.5 && 0左移运算可以将颜色的RGB值转为HEX值:var color = {r: 186, g: 218, b: 85}; // RGB to HEXvar rgb2hex = function(r, g, b) {return '#' + ((1 && 24) + (r && 16) + (g && 8) + b).toString(16).substr(1);} rgb2hex(color.r,color.g,color.b)// &#bada55& && 右移运算右移运算可以模拟2的整除运算:5 && 1 // 相当于 5 / 2 = 2 21 && 2 // 相当于 21 / 4 = 5 21 && 3 // 相当于 21 / 8 = 2 21 && 4 // 相当于 21 / 16 = 1此外,void运算符的作用是用来执行一个表达式,然后返回undefined,而且它的运算符优先级也比较高void 4+7 实际上等同于 (void 4) +7。一般运算符是左结合的,但是=和三目运算符?:却是右结合的:w = x = y = z;q = a?b:c?d:e?f:g;//相当于:w = (x = (y = z)); q = a?b:(c?d:(e?f:g));【今日微信公号推荐↓】更多推荐请看《》其中推荐了包括技术、设计、极客&和&IT相亲相关的热门公众号。技术涵盖:Python、Web前端、Java、安卓、iOS、PHP、C/C++、.NET、Linux、数据库、运维、大数据、算法、IT职场等。点击《》,发现精彩!
最有影响力的程序员自媒体,关注程序员相关话题:IT技术、IT职场、在线课程、学习资源等.
程序员的那些事的二维码
微信扫一扫
程序员的那些事的其他文章跪求C++大神帮忙,我的这个程序错在哪里了?_百度知道20.三目运算符的优先问_第五章 IF语句与逻辑运算符_Visual C++从入门到精通完整版视频教程_视频教程专区_太平洋电脑网软件频道急急急 !求C++大神解答~~~ 我的代码如下,麻烦帮忙看看哪错了~ 感激不尽~~_百度知道可以帮我看看这个题哪里出问题了吗?拜托了,各位大神们。_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:245,979贴子:
可以帮我看看这个题哪里出问题了吗?拜托了,各位大神们。收藏
生成一个储蓄类CK。用静态数据成员表示每个存款人的年利率lixi。类的每个对象包含一个私有数据成员cunkuan,表示当前存款额。提供一个calLiXi( )成员函数,计算利息,用cunkuan乘以lixi除以12取得月息,不计复利,并将这个月息加进cunkuan中。提供设置存款额函数set( )。提供一个静态成员函数modLiXi( ),可以将利率lixi修改为新值。实例化两个不同的CK对象saver1和saver2,存款额分别为00.0。将lixi设置为3%,计算一个月后和3个月后每个存款人的存款余额并打印其最新的结果。首先定义储蓄类CK,它包含一个私有数据成员cunkuan(表示当前存款额),数据类型为double,一个静态数据成员lixi(表示年利率),数据类型也为double;包含一个成员函数calLiXi( )和一个静态成员函数modeLiXi( ),其中modeLiXi( )应含有一个表示要更改的年利率的新值的参数。最后还要有一个成员函数set( )用于设置存款额。程序执行结果为:年利率为3%时一个月后甲的存款余额为:¥2005一个月后乙的存款余额为:¥3007.5三个月后甲的存款余额为:¥2015三个月后乙的存款余额为:¥3022.5#include&iostream&class CK{private:public:CK(double c){};void set(double x){};static double modLiXi();void calLiXi(int m=1);};void CK::calLiXi(){//计算利息 x= (cunkuan*x)/12;xunkuan=cunkuan+x;cout&&cunkuan&&}void CK::modLiXi(double x){//更改年利率double x=0;//初始化 }
voidmain(){ CK saver1(2000.0),saver2(3000.0); CK::lixi=3%; cout&&&年利率为3%时:&&&cout&&&一个月后甲的存款余额为: ¥&;saver1.calLiXi();cout&&&一个月后乙的存款余额为: ¥&;saver2.calLiXi();saver1.set(2000.0);saver2.set(3000.0);cout&&&三个月后甲的存款余额为: ¥&;saver1.calLiXi(3);cout&&&三个月后乙的存款余额为: ¥&;sacer2.calLiXi(3);
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 帮忙看看我的阴唇 的文章

 

随机推荐