C语言基础
来源:互联网 发布:数据实验室 编辑:程序博客网 时间:2024/06/05 14:32
#include <stdio.h>
#define _ F-->00||-F-OO--;
int F=00,OO=00;
void F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_
_-_-_-_
}
main()
{
F_OO();
printf("F: %d OO: %d\n",F,OO);
}
问这段程序输出是什么?
这代码主要就是运算符优先级的问题
我们先看宏定义的_ 是什么值
F-->00就是判断F是否大于0,然后F--
如果F-->00结果为真,那么后半部分-F-OO--是不执行的,OO值不变
如果F-->00结果为假,那么后半部分-F-OO--结果是0,然后OO=-1
F_OO()函数里面
第一行_-_-_-_
被替换成
F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
也就是
F-->00||-F-OO--;
-F-->00||-F-OO--;
-F-->00||-F-OO--;
-F-->00||-F-OO--;
执行 F-->00||-F-OO--; 结果为0,然后F=-1, OO=-1
执行 -F-->00||-F-OO--; 结果为1,然后F=-2, OO=-1
F_OO()是void类型,所以里面的运算结果不用管了,只要管全局的F和OO就可以了
可以看出执行一次F-->00||-F-OO--;
执行一次-F-->00||-F-OO--;
因此该代码运行结果就是F的值是负的_ 的个数,OO的值是负的F_OO()的行数
- c语言基础--编程基础
- C语言基础-基础语法
- C语言基础 上
- c语言基础
- C语言基础
- C语言基础
- C 语言基础
- c语言基础解析
- c语言 指针基础
- 3 C语言基础
- C语言基础
- C语言基础
- C语言基础
- C语言基础1
- C语言基础
- c语言基础
- c语言基础 2
- C语言程序基础
- 玩转GOOGLE的十九招秘技
- JDBC处理大数据(大二进制数据的存储和读取)
- 作为一个程序员我们到底可以为自己营造一个什么样的梦
- 在windows7 64位系统下面使用platform builder6.0问题解决办法
- Delphi的可视化部件用法简介
- C语言基础
- MySQL配置项
- android 4.0 source code available
- Sql Server2005导入导出表数据
- 获取Datagridview 中的checkbox选中项
- setsockopt设置socket状态
- Linux下通用线程池的构建
- 使用JDBC进行批处理(两种方法)
- 可编辑下拉框