# C, <s>224</s> <s>229</s> **227** chars
###...prints the `n`'th fibonacci or 2^`n`
<!-- language-all: lang-c -->
## Golfed up:

    #import <Foundation/Foundation.h>
    typedef unsigned long long f;f main(int c,char*v[]){f n=strtoull(v[1],(char**)v[2],10)-1;f x=(c>2&&++n==0)?0:1;f y=0;while(n--!=0&&x+y>=x&&x>0){f z=x;c>2?x+=y=z:(x+=y,y=z);}printf("%llu\n",x);}

## Readable:

    #import <Foundation/Foundation.h>
    typedef unsigned long long f;
    f main(int c,char*v[]){
        f n=strtoull(v[1],(char**)v[2],10)-1;
        f x=(c>2&&++n==0)?0:1;
        f y=0;
        while(n--!=0&&x+y>=x&&x>0){
            f z=x;
            c>2?x+=y=z:(x+=y,y=z);
        }
        printf("%llu\n",x);
    }

If the number exceeds the length of an `unsigned long long` it will print the highest it can get.
Return type is `f` (unsigned long long) for short code, it does generate 2 compiler warnings and a note but it still compiles!

It also has the option to calculate 2^n because it initially printed that.

**Usage:**

 - `./fibbin 42` - prints `42`'th fibonacci number (267914296)
 - `./fibbin 42 anyInputHere` - prints 2^`n` (4398046511104).
 
**Don't** enter values of 0, higher than 93 (fibonacci) or higher than 63 (2^n).

**Examples:**

 - `./fibbin 1` = `1`
 - `./fibbin 2` = `1`
 - `./fibbin 3` = `2`
 - `./fibbin 4` = `3`
 - `./fibbin 42` = `267914296`
 - `./fibbin 92` = `7540113804746346429`
 - `./fibbin 93` = `12200160415121876738` - this is the highest i can go
 - `./fibbin 94` = should be 19740274219868223167, but it doesn't fit into an unsigned long long so i will print #93

 - `./fibbin 1 bin` - `2`
 - `./fibbin 2 bin` - `4`
 - `./fibbin 3 bin` - `8`
 - `./fibbin 4 bin` - `16`
 - `./fibbin 42 bin` - `4398046511104`
 - `./fibbin 62 bin` - `4611686018427387904`
 - `./fibbin 63 bin` - `9223372036854775808` - this is the highest i can go
 - `./fibbin 64 bin` - should be 18446744073709551616, but it doesn't fit into an unsigned long long so i will print 0

These tests match the output of [wolfram-alpha](http://www.wolframalpha.com/input/?i=fibonacci+1+and+fibonacci+2+and+fibonacci+3+and+fibonacci+4+and+fibonacci+42+and+fibonacci+92+and+fibonacci+93+and+2%5e1+and+2%5e2+and+2%5e3+and+2%5e4+and+2%5e42+and+2%5e62+and+2%5e63&incParTime=true), due to the heavy calculations wolfram may time out but it generally doesn't.