刚刚写了很多,结果没设置好,写的全没了,郁闷啊。再重复的写点。
今天第一次用IAR workbench 来写程序,以前都是看,没有真正实践,写了后发现编译器之前的差别还是蛮大的。
第一个程序:
void main(void)
{
int a="1",b=2,c;
c = a+b;
}
这是一个很简单的小程序,可是在IAR里compile时,却出现警告
Warning[Pe550]: variable "c" was set but never used
c变量被定义了,但没有被调用,去网上查了下,发现这是msp430编译器的特别之处,它把之定义没被用到的变量优化了。后来把它改了一下,就好了。
改后的程序
void main(void)
{
int a="1",b=2,c;
c = a+b;
c = c<<1;
}
第二个程序
#include <string.h>
void main(void)
{
char TAB[] = {"hello,world!"};
char TAB1[] = {1,2,3,4,0,5,6,7};
int n1=0,m1=0,n2=0,m2=0;
n1 = strlen (TAB);
m1 = sizeof TAB;
n2 = strlen(TAB1);
m2 = sizeof(TAB1);
n1 = n1<<1;
m1 = m1<<1;
n2 = n2<<1;
m2 = m2<<1;
while(1);
}
这个程序主要是看看sizeof和strlen的区别,它们的区别主要有以下几点:
1、sizeof是运算符,而strlen是函数。
2、sizeof后面如果是类型则必须加括号,如果是变量名可以不加括号;而strlen就必须加括号。
3、sizeof可以用类型作为参数;而strlen必须用char *作参数,而且必须以''\0''结尾。
4、sizeof返回的是数组的大小;而strlen返回的是字符串的长度(即''\0''之前的字符串的长度,不包括''\0'')。
所以上面程序的结果是
n1=24;m1=26;n2=8;m2=16;
这是我自己写的小程序,加深了对sizeof和strlen的理解。
文章评论(0条评论)
登录后参与讨论