最佳答案
可以运算,但字串连接要用函数不能直接用+
追问:
比如怎么运算?能写一个表达式吗?
追答:
可以,如char *s="123456";char *s1;s1=s+2; //字串的表达式运算,结果s1为3456
追问:
#define A 3.1是定义常量还是变量?如果程序中函数体定义一个变量也用大写的A标识符并且初始化值,那么A的值是宏定义的还是局部变量的值?
追答:
#define A 3.1中的A肯定是常量,若你有了这个宏,在函数中不可能再将A用于变量了,宏是预处理中做的,它是最优先的,在预处理阶段,所有程序中的A将会被替换为3.1,你若将它写成变量,肯定是语法错,如在程序中写float A=1.2;在预处理时,会替换成float 3.1=1.2; ///语法错
追问:
我还有一个问题,字符串用%d打印的结果是什么根据什么来算不出的?#define A "abcd" {printf("%d",A);输出这个字符串的结果是什么?我知道字符是根据ascll码取值的 不知道字符串用%d打印的结果怎么算出来的?
追答:
在C语言中,格式化字符必须与参数一致,否则输出的结果是"不可预见的"(我在这里说过多次了)你用%d输出字串的内容,结果是不确定的,若你一定要深入研究,也得不到一个固定的结果,因为它输出的是一个地址,而这个地址与你的编译器/操作系统/运行环境都有关,你可以认为它是一个随机数,若你有能力,可以用olldbg或Cheat Engine跟踪结果的生成
追答:
可以肯定的告诉你%d输出字串的值,与ASCII毫无关系
追问:
偶偶 谢谢你总烦到你
追问:
c语言中变量不赋值可以参加运算吗?比如 int a=15,b; b=a++,a++,b-a;printf("%d",b);也会运行结果 怎么算的?
追答:
C中,变量不赋值可以参加运算的(它可以编译运行),但结果是不确定的但你的程序中,a,b都是有赋值的int a=15; //这个是初始化b虽然没有初始化,但你的b=a++,a++,b-a;就是赋值且因为=优先于逗号(,)运算,且++是后加,所以先计算b=a++;再a++及b-a(这个不影响结果)所以最终a=17b=15
追问:
scanf函数前面可以赋值变量吗?比如b=scanf("%d",&a);发现这样也可以编译,也会有一个值 这算是什么表达式?
追答:
scanf是一个函数,它有返回值的,它的原型为int scanf(const char *format[, address, ...]);它的返回值有以下定义On success, scanf returns the number of input fields successfully scanned, converted, and stored. The return value does not include scanned fields that were not stored.On error:if no fields were stored, scanf returns 0.if scanf attempts to read at end-of-file or at end-of-string, it returns EOF.
追问:
谢谢你
追问:
是不是说只要是函数都有返回值?无论是主函数 子函数还是头文件库函数包括的函数都有返回值?
追答:
当然不是,有些函数是没有返回值的,它被定义成void类型的所以C标准函数都可以通过它的手册(开发工具中一般会有)来查它的定义windwos下的API可以通过MSDN查到
最佳答案由网友 whoami1978 提供