sizeof(strb++); 的问题 为什么strb没有++
2016-09-03 12:53
218 查看
#include <cstdio>
#include <cstring>
void func(char str[50])
{
printf("str:%s\n", str);
printf("A = %d, B= %d\n", sizeof(str), strlen(str));
}
int main()
{
char stra[] = "HelloWorld";
char* strb = stra;
printf("C = %d, D = %d\n", sizeof(stra), sizeof(strb++)); // strb并没有++
sizeof(strb++); // strb并没有++
sizeof(strb++); // strb并没有++
printf("strb++:%s\n", strb);
func(++strb);
printf("E = %d, F = %d\n", strlen(stra), strlen(strb++));
}
/**
输出:
C = 11, D = 4
strb++:HelloWorld
str:elloWorld
A = 4, B= 9
E = 10, F = 9
*/
sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。
#include <cstring>
void func(char str[50])
{
printf("str:%s\n", str);
printf("A = %d, B= %d\n", sizeof(str), strlen(str));
}
int main()
{
char stra[] = "HelloWorld";
char* strb = stra;
printf("C = %d, D = %d\n", sizeof(stra), sizeof(strb++)); // strb并没有++
sizeof(strb++); // strb并没有++
sizeof(strb++); // strb并没有++
printf("strb++:%s\n", strb);
func(++strb);
printf("E = %d, F = %d\n", strlen(stra), strlen(strb++));
}
/**
输出:
C = 11, D = 4
strb++:HelloWorld
str:elloWorld
A = 4, B= 9
E = 10, F = 9
*/
sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。
它并不是函数。根据C99规范, sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义, sizeof(strb++); 在编译的时候被翻译成 sizeof((strb++的数据类型)) 也就是 sizeof(char); 然后才会继续编译成最终的程序,当然在最终程序执行的时候,自然不会执行任何strb++或++strb了。
参考: http://zhidao.baidu.com/link?url=c3X2_o8ELz-yHeQI30r5oSpvsWnyRjM2M0tINXY3Qk_qj8ixZCegN--f5i6spQmvvXY2u3G62_hBk3q1Ykbm6qf5i6spQmvvXY2u3G62_hBk3q1Ykbm6q
相关文章推荐
- 提个问题:为什么没有版本历史记录?
- sizeof问题,为什么不是4+8+4?
- 关于 Eclipse 创建 Dynamic Web Project (动态的 WEB 项目) 为什么会出现没有web.xml配置文件的问题
- Python中为什么没有++和--(自增/减)
- 代码配置没有问题,为什么不回滚事务(要理解Mysql数据库引擎)
- 为什么LARGE_INTEGER 和 ULARGE_INTEGER结构没有这个问题
- android studio修改包名的问题 !为什么你改完后包名没有变化?
- 【原创】为什么没有发现这些问题?
- 解决为什么svn没有对号等符号的问题。
- 打开Android studio遇到的一些问题,为什么安装jdk没有jdk.....的文件夹
- ++编译过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的彻底解决
- 你为什么没有发现问题?!
- sizeof struct为什么总是一个问题
- 将客户端设置为不同的字符集,演示导入/导出可能产生的乱码问题。为什么没有出现乱码
- 简单问题:sizeof(char型数组)为数组大小,而不是4, 为什么? 100!
- google搜索为什么没有中文问题?
- 【小小问题集锦5之---为什么在没有 ORDER BY 子句的情况下无法保证 SELECT 语句所返回结果的顺序。】
- 在没有对象的情况下使用decltype和sizeof问题的解决方案
- 关于“JAVA中为什么没有了多继承并出现了接口”这一问题引发的一些思考
- 新问题: 两个样式对同一个元素操作,为什么最新的样式没有起作用?(已解决)