C/C++小和冷知识
在这篇文章中,我会介绍几个很少人知道的C/C 冷知识与小技巧,还有一些可以提高自己在公司的不可替代性的小知识(别人看不懂)。以下都是C/C 通用,可以在自己的编译器中都试一试。
1.数组下标
调用数组元素时,要用下标。大部分人肯定是这样写的:
-
int a[10]={0,1,2,3,4,5,6,7,8,9},x;
-
x=a[3];
其实,数组的下标可以和数组名调换一下位置,如下:
-
int a[10]={0,1,2,3,4,5,6,7,8,9},x;
-
x=3[a];//等价于 x=a[3];
2.大括号与中括号
其实,早期的键盘打不出“[”、“]”、“{”和“}”。所以,C/C 可以用“<%”代替“{”,“%>”代替“}”,“<:”代替“[”,“:>”代替“]”。
例:(C)
-
-
int main()
-
{
-
int a[10]={0,1,2,3,4,5,6,7,8,9};
-
printf("%d",a[3]);
-
return 0;
-
}
可以改为:
-
-
int main()
-
<%
-
int a<:10:>=<%0,1,2,3,4,5,6,7,8,9%>;
-
printf("%d",a<:3:>);
-
return 0;
-
%>
这是不会报错的,C 同理:
-
-
using namespace std;
-
int main()
-
{
-
int a[10]={0,1,2,3,4,5,6,7,8,9,0};
-
cout<<a[3];
-
return 0;
-
}
可以改为:
-
-
using namespace std;
-
int main()
-
<%
-
int a<:10:>=<%0,1,2,3,4,5,6,7,8,9,0%>;
-
cout<<a<:3:>;
-
return 0;
-
%>
3.sizeof
很多人都认为“sizeof”是函数,需要写成:
-
int a=666,sz;
-
sz=sizeof(a);
其实不然,“sizeof”也是一个单目运算符,可以写成:
-
int a=666,sz;
-
sz=sizeof a;
与上面的语句是等价的,两种写法都可以。
4. 变量的乘法(位运算)
大家平时要将变量乘2,再除以2,再乘以10(虽然有很多无用功,但这里为了多介绍几个,就这样了),肯定是用的以下语句:
-
a*=2;
-
a/=2;
-
a*=10;
但是,如果想让别人看不懂,却很简单、效果相同,应该使用以下代码:
-
a<<=1;//等价于 a*=2;
-
a>>=1;//等价于 a/=2;
-
a=(a<<1) (a<<3);//等价于 a*=10;
5.交换两个变量的值(位运算)
大家要交换两个变量的值,肯定是用:
-
int a=6,b=8;
-
int c=a;
-
a=b;
-
b=c;
或者是使用C 中自带的函数“swap()”:
-
int a=6,b=8;
-
swap(a,b);
可是,交换这事,你能自己写一串代码,不用第三个变量,就能实现吗?(你可以先思考一下,在看下面的答案。提示:用位运算)
代码如下:
-
int a=6,b=8;
-
a^=b;
-
b^=a;
-
a^=b;
6.十进制转二进制(位运算)
这个内容是个干货,之前的内容可有可无,但现在这个是有现实作用的。大家如果要十进制转二进制,是不是要这样写:
-
int decimal=123456,binary=0,base=1;
-
while(decimal>0)
-
{
-
binary =(decimal % 2)*base;
-
decimal/=2;
-
base*=10;
-
}
-
//最后结果是binary的值
但是,我们可以用简便地位运算来写。(由于要去掉前导零,这里使用了字符串,C记得添加头文件<string.h>,C 记得添加头文件<string>)
-
int a=123456,i;
-
string binary="";
-
for(i=31;i>=0;i--) binary =char(a>>i&1) '0';
-
i=0;
-
while(binary[i]=='0')
-
{
-
binary.erase(i,1);
-
i ;
-
}
-
if(binary.empty()) binary="0";
看上去复杂,其实主要部分就是那个for循环。
7.判断≠(!=)(位运算)
一般判断两个变量是否相等,用以下代码就可以了:
-
int a=6,b=8;
-
if(a!=b)
-
{
-
//执行语句
-
}
但是我们也可以用异或(^)来判断
-
int a=6,b=8;
-
if(a^b)
-
{
-
//执行语句
-
}
上面两句话是等价的(但是下面的少一个字符。。。)
8.int转char(位运算)
一般一个一位数转字符(char),就用以下代码:
-
int a=6;
-
char b=6 '0';
但是我们也可以使用位运算:
-
int a=6;
-
char b=a^48//等价于 char b=a '0'; 或 char b=a 48;
这个位运算有一个好处,就是int转char,还是char转int,都是^48,下面是char转int的一个例子:
-
char a='6';
-
int b=a^48//等价于 int b=a-'0'; 或 int b=a-48;
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgggehj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13