C++初级学习(二)——运算符和循环、判断

本文介绍了C++中的运算符,包括算数、关系、逻辑、赋值和杂项运算符,强调了sizeof、条件运算符及逗号运算符的用法。此外,还讲解了循环的基本概念,如基于范围的for循环,并提示了如何使用goto语句进行流程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运算符

算数运算符 (与C一致,略)

关系运算符(与C一致,略)

逻辑运算符(与C一致,略)

赋值运算符(与C一致,略)

杂项运算符(似乎与C一致,还是记录一下)

重要杂项运算符:

运算符描述examle
sizeof返回变量的大小int hzy,sizeof(hzy)将返回4
condition?X:Y若condition为真,则值为X,否则为Y
执行一系列运算,整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值
.(点)和->(箭头)用于引用类、结构和共用体成员
cast强制转换,将一种数据类型转换为另一种数据类型int(2.2000)将返回2
&指针运算符&返回变量的地址
*指针运算符*指向一个变量

* sizeof
语法:

sizeof (data type);
  • condition?X:Y
    语法:
Exp1 ? Exp2 : Exp3;

Exp1若为真,则计算Exp2的值,且将计算结果当做整个表达式的值,否则计算Exp3的值。该语句可以用来替代简单的if-else语句。
* ,

看下面这个例子:
#include <iostream>
using namespace std;

int main()
{
   int i, j;

   j = 10;
   i = (j++, j+100, 999+j);

   cout << i;

   return 0;
}

最终i的值为1010,原因如下:
j的初值为10,先自增,为11,然后执行j+100,值为111,但是该值不赋予j,因此j还是11,最后999+11=1010,把该值赋予i。

  • .和->
    可以参考如下的例子:
struct Employee {
  char first_name[16];
  int  age;
} emp;//结构体emp中含有的成员为first_name数组和age
strcpy(emp.first_name, "zara");//将“zara”赋给emp中的first_name
strcpy(p_emp->first_name, "zara");//p_emp为指针,指向类型为Employee的对象,将“zara”赋给对象emp的first_name成员

访问结构的成员时使用点运算符,而通过指针访问结构的成员时使用箭头运算符。
* cast

(type) expression;
  • &
    &为取地址运算符,返回操作数的内存地址。
  • *
    *为间接寻址运算符,返回操作数所指定地址的变量的值。

可以参考下列代码:

#include <iostream>

using namespace std;

int main ()
{
   int  var;
   int  *ptr;
   int  val;

   var = 3000;

   // 获取 var 的地址
   ptr = &var;

   // 获取 ptr 的值
   val = *ptr;
   cout << "Value of var :" << var << endl;
   cout << "Value of ptr :" << ptr << endl;
   cout << "Value of val :" << val << endl;

   return 0;
}

结果如下:

Value of var :3000
Value of ptr :0xbff64494
Value of val :3000

注意仔细体会上述值的差别。

运算符的优先级

后缀>一元>乘除求余>加减>移位>关系>相等>位与>位异或>位或>逻辑与>逻辑或>条件>赋值>逗号

循环

基本与C一致。
C++11允许基于范围的for循环:

int my_array[5] = {1, 2, 3, 4, 5};
// 每个数组元素乘于 2
for (int &x : my_array)//:前面表示用于迭代的变量,后面表示循环的范围
{
    x *= 2;
    cout << x << endl;  
}
// auto 类型也是 C++11 新标准中的,用来自动获取变量的类型
for (auto &x : my_array) {
    x *= 2;
    cout << x << endl;  
}
#include<iostream>  
#include<string>  
#include<cctype>  
using namespace std;  

int main()  
{  
    string str("some string");  
    // range for 语句  
    for(auto &c : str)  
    {  
        c = toupper(c);  
    }  
    cout << str << endl;  
    return 0;  
}

上述代码中,toupper函数为将小写转换为大写。代码遍历字符串,将所有字符变为大写然后输出。
goto对应需要加label作为标识符,goto语句可以用于跳出深嵌套。
for(::)可以用于表示一个无限循环
Tips:按下CTRL+C可以终止一个无限循环

判断(与C一致,略)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值