C++做题笔记+知识点总结

本文深入探讨了C++编程中的复杂问题,包括变量运算、内联函数特性、三目运算符的运算方向、常量折叠现象以及字符串大小计算的陷阱。通过具体代码示例,解析了每个问题背后的原理。

1)该程序的执行结果是

int i=5,k;
 
k=(++i)+(++i)+(i++)printf("%d,%d",k,i);

题目解析:首先i会自加两次,i = 7,k = 7 + 7 + 7,k的值为21,i最后在加1,i = 8.

2)关于inline函数的一些知识点
1.使用inline关键字的函数不一定在被调用处展开,因为编译器拒绝为函数体过大的函数做为inline函数

3)设int a=1, b=2, c=3, d=4;,则a<b?a:c<d?c:d表达式的值为?
题目分析:这个题目主要的考点是三目运算发是从右往左运算。先算c<d?c:d值为c,在算a<b?a:c,最后的答案为a即1。

4)该程序输出结果是:

#include <iostream> 
using namespace std; 
int main(void) 
{ 
    const int a = 10; 
    int * p = (int *)(&a); 
    *p = 20; 
    cout<<"a = "<<a<<", *p = "<<*p<<endl; 
    return 0; 
}

程序输出:10, 20,该题考点C++常量折叠。

5)该程序输出结果是

char *str1 = "Hello", str2[] = "Hello";printf("%d %d", sizeof(str1), sizeof(str2)); 

这一题有一个陷阱,sizeof(str1)的值应为4,因为他计算的是一个字符串指针的大小,sizeof(str2)的值为6,后面还有一个’\0’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值